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.继续执行构造函数内部的代码。

上一篇 下一篇

猜你喜欢

热点阅读