实现模拟JS的new功能

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"}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容