js中new做了什么

317 阅读1分钟

一个构造函数要实例化出一个对象要用new,那new在实例化对象的过程中做了什么呢?

  • 创建了一个空对象
  • 把对象中的__proto__的指针指向构造函数的prototype
  • 把构造函数的this指针指向这个对象
  • 执行一遍构造函数(为对象添加属性)
function Foo(){
    this.name = 'huang'
}
var Obj = {}; //第一步
Obj.__proto__ = Foo.prototype; //第二步
Foo.call(Obj); //第三步