new操作符工作原理

1
2
3
4
5
6
7
8
9
10
11
// f 为构造函数,o 为创建的对象
function New (f) {
/*1*/
var o = { '__proto__': f.prototype };
return function () {
/*2*/
f.apply(o, arguments);
/*3*/
return o;
};
}
  1. 创建对象o
  2. o__proto__属性指向f的原型
  3. f内部的this指向o
  4. 返回o