new 一个对象发生了什么
2019-04-30 本文已影响6人
赵永盛
Function A(){}; new A() 发生了什么?
- var obj = {}
- obj.[[proto]] === A.prototype
- A.call(obj)
解析:
首先创建一个空对象
指向构造函数的原型链
执行构造函数,将 this 上属性拷贝到空对象
注意:若构造函数中返回this或返回值是基本类型(number、string、boolean、null、undefined)的值,则返回新实例对象;若返回值是引用类型的值,则实际返回值为这个引用类型。