JavaScript 的new操作做了什么?
2019-08-01 本文已影响0人
z0nka1
1.对象是什么
(1)对象是单个实物的抽象。
(2)对象是一个容器,封装了属性(property)和方法(method)。
2.构造函数
面向对象编程的第一步,就是要生成一个对象。那怎么生成对象呢?前面说过,对象是单个实物的抽象,生成对象通常需要一个表示某一类事物共同特征的模板,对象通过这个模板来生成。
JavaScript用来生成对象的模板就是构造函数(constructor)。
构造函数有几个特点:
1.构造函数一般以大写字母开头。
2.构造函数内部有this
关键字,表示所要生成的对象。
3.生成对象的时候,必须用new
命令。
new
命令的作用,就是执行构造函数,返回一个对象。
var Car = function () {
this.color = 'yellow';
}
var myCar = new Car();
myCar.color // yellow
上面的代码,利用new
命令生成了一个实例对象,保存在myCar
中。新生成的实例对象,从构造函数Car
中得到了color
属性。
3.new命令的原理
使用new
命令时,它后面的函数依次执行下面的步骤。
1.创建一个空对象,作为将要返回的对象实例。
2.将这个空对象的原型指向构造函数的prototype
属性。
3.将这个空对象赋值给构造函数内部的this
关键字。
4.开始执行构造函数内部的代码。
也就是说,构造函数内部的this
指的是新生成实例对象,所有针对这个this
的操作,都作用在新生成的对象实例上。
总结
总结一下,我们在使用new
命令的时候,JavaScript在背后主要做了这些事:
1.生成一个空对象。
2.将这个空对象的原型,指向构造函数的prototype
。
3.将这个空对象赋值给构造函数内部的this
。
4.继续执行构造函数内部的代码。