0148 JavaScript 的 new关键字

我的版本
  1. 在构造函数代码开始执行之前,创建一个空对象;
  2. 设置新对象的__proto__指向构造函数的prototype对象,p.proto = XXXX.prototype;
  3. 执行构造函数,修改this的指向,让构造函数中的this指向创建出来的空对象,拷贝构造函数中的方法、属性给新对象;
  4. 判断构造函数返回的结果,如果返回的不是引用类型值,默认把实例返回;如果返回的是引用类型值,则返回引用类型。

ZXT
  1. 拥有普通函数执行的一面,让他作为普通函数执行
  2. 创建一个实例对象
    ->空对象
    ->对象.proto===类.prototype
  3. 方法执行的时候,方法中的this是实例对象
  4. 判断方法的返回结果,如果返回的不是引用类型值,默认把实例返回

5.2.3.2 new关键字的作用
  1. 在构造函数代码开始执行之前,创建一个空对象;
  2. 修改this的指向,把this指向创建出来的空对象;
  3. 执行函数的代码
  4. 在函数完成之后,返回this---即创建出来的对象

new -- 2015 ZD:
  1. 创建一个空对象:new obj = { };
  2. 用空对象,调用构造函数,构造函数在空对象中添加属性、方法;
  3. 设置新对象的__proto__指向构造函数的prototype对象;
    【任何一个对象都有__proto__,任何一个函数都有prototype对象。】
  4. 返回新对象的地址。

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.长大挣钱回报父母。

原文地址:https://www.cnblogs.com/jianjie/p/12153742.html