我的版本
- 在构造函数代码开始执行之前,创建一个空对象;
- 设置新对象的__proto__指向构造函数的prototype对象,p.proto = XXXX.prototype;
- 执行构造函数,修改this的指向,让构造函数中的this指向创建出来的空对象,拷贝构造函数中的方法、属性给新对象;
- 判断构造函数返回的结果,如果返回的不是引用类型值,默认把实例返回;如果返回的是引用类型值,则返回引用类型。
ZXT
- 拥有普通函数执行的一面,让他作为普通函数执行
- 创建一个实例对象
->空对象
->对象.proto===类.prototype - 方法执行的时候,方法中的this是实例对象
- 判断方法的返回结果,如果返回的不是引用类型值,默认把实例返回
5.2.3.2 new关键字的作用
- 在构造函数代码开始执行之前,创建一个空对象;
- 修改this的指向,把this指向创建出来的空对象;
- 执行函数的代码
- 在函数完成之后,返回this---即创建出来的对象
new -- 2015 ZD:
- 创建一个空对象:new obj = { };
- 用空对象,调用构造函数,构造函数在空对象中添加属性、方法;
- 设置新对象的__proto__指向构造函数的prototype对象;
【任何一个对象都有__proto__,任何一个函数都有prototype对象。】 - 返回新对象的地址。
new的本质复习【WSK】
当我们new 一个实例后,系统自动做了如下事情:
(1)创建一个空对象, var p = {}。
(2)拷贝构造函数中的方法、属性到空对象中。
(3)自动成生一个属性_proto_指向类的原型, p.proto = XXXX.prototype。
new一个对象背后做了些什么? 【ShangGuiGu】
- 创建一个空对象
- 给对象设置__proto__, 值为构造函数对象的prototype属性值, this.proto = Fn.prototype
- 执行构造函数体(给对象添加属性/方法)
New 和构造函数确认了眼神:
1.他们俩生了一个宝宝。
2.这个宝宝必须是亲生的 this指向。
3.教孩子读书一肚子墨水。
4.长大挣钱回报父母。