美文网首页
new 操作符都做了些什么

new 操作符都做了些什么

作者: 南蓝NL | 来源:发表于2019-07-13 23:06 被阅读0次
    function Foo(name){
       console.log(arguments);
       this.name = name; 
    }
    let a = new Foo('2');
    
    • 创建一个空对象
    • 然后让这个空对象的proto 指向构造函数的prototype
    • 执行构造函数,将属性或者方法添加到创建的空对象上
    • 如果构造函数执行的结果返回的是一个对象,那么返回这个对象;如果不是,返回新创建的对象
    function _new(){
       // 创建一个空对象
       let target = new Object();
       let [constructor,...args] = [...arguments];
       // 将这个空对象的 __proto__ 指向这个构造函数的prototype
       target.__proto__ = constructor.prototype;
        // 执行这个构造函数,将属性或者方法添加到创建的对象上
       let result = constructor.apply(target, args);
       //   如果构造函数创建的不是一个对象,那么返回这个对象
       if(result&&typeof (result) == 'function' && typeof (result) == 'object'){
           return result;
       }
       // 如果构造函数函数的不是一个对象,返回创建的新对象
       return result;
    }
    

    相关文章

      网友评论

          本文标题:new 操作符都做了些什么

          本文链接:https://www.haomeiwen.com/subject/kccmkctx.html