new 一个对象发生了什么

Function A(){}; new A() 发生了什么?

  1. var obj = {}
  2. obj.[[proto]] === A.prototype
  3. A.call(obj)

解析:

  首先创建一个空对象
  指向构造函数的原型链
  执行构造函数,将 this 上属性拷贝到空对象

注意:若构造函数中返回this或返回值是基本类型(number、string、boolean、null、undefined)的值,则返回新实例对象;若返回值是引用类型的值,则实际返回值为这个引用类型。

你可能感兴趣的:(new 一个对象发生了什么)