在JS中New操作符具体干了什么?

819 阅读1分钟

在日常的面试或者笔试过程中,大家经常会遇到“new操作符具体干了什么?”

如果就回答创建了一个对象。那就非常抱歉了,肯定就挂了,而且在面试官看来你就是就是菜鸟一枚,那我们就来看下导致干了什么?

我百度了一下,都基本进行了简要描述,我这里总结了以下,具体进行了四个步骤

1,创建一个空对象 var obj = new Object();

2,让空对象的原型属性指向原型链,设置原型链 obj._proto_=Func.prototype;

3,让构造函数的this指向obj,并执行函数体 var result=Func.call(obj);

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

好的,那我们就按照这个步骤来实现一个New函数。

function New () {  
    var obj = new Object();  
    obj._proto_ = Object.prototype;  
    Object.call(obj);  
    return typeof result === 'object'? result : obj;
}