new操作符做了什么事情,手写实现一个new操作

new操作符做了什么事情,手写实现一个new操作

答:

  • var obj = {} //创建一个空对象。
  • obj.proto = Fun.prototype //空对象的proto指向构造函数的原型对象。
  • Fun.call(obj) // 构造函数的this指向创建的空对象。
实现一个new
function _new(fn, ...arg) {
    const obj = Object.create(fn.prototype);
    const ret = fn.apply(obj, arg);
    // 根据规范,返回 null 和 undefined 不处理,依然返回obj,不能使用
    return ret instanceof Object ? ret : obj;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容