美文网首页
实现模拟JS的new功能

实现模拟JS的new功能

作者: easy_mark | 来源:发表于2019-07-09 17:31 被阅读0次

    new功能是要生成一个构造函数的实例,所以在实现过程中需要我们手动创建一个空对象,对象的原型继承自构造函数。如果调用构造函数无返回结果,则返回结果,否则返回创建的对象。

    function new2(...rest){
        let obj = {};
        let [context,...args] = rest;
        obj._proto_ = Object.create(context.prototype);
        let result = context.apply(obj,args);
        return typeof result =="object" ? result : obj
    }
    
    function d(age){
        this.age = age;
        return {age:this.age,name:"111"}
    }
    var c = new2(d,16);
    c 
    //{age: 16, name: "111"}
    

    相关文章

      网友评论

          本文标题:实现模拟JS的new功能

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