Skip to main content

new 操作符都实现了什么

new 操作符做了什么

(1)创建了一个空对象

var obj = new object();

(2)设置原型链

obj._proto_ = fn.prototype;

(3)让 fn 的 this 指向 obj,并执行 fn 的函数体

var result = fn.call(obj);

(4)判断 fn 的返回值类型,如果是值类型,返回 obj。如果是引用类型,就返回这个引用类型的对象。

if (typeof(result) == "object"){  
fnObj = result;
} else {
fnObj = obj;
}