new的本质

var o = new Foo();

  • 创建一个全新的对象
  • 这个新对象会被执行[[Prototype]]连接
  • 这个新对象会绑定到函数调用的this
  • 如果函数没有返回其他对象,那么new表达式中的函数调用会自动返回这个新对象

也就是说上例相当于执行如下代码

var o = new Object();
o.__proto__ = Foo.prototype;
Foo.call(o);

你可能感兴趣的:(new的本质)