JavaScript new的实现原理

function mockNew() {
 // 取出类
 let Constructor = [].shift.call(arguments);
 
 // 创建空对象
 let obj = {};
 
 // 设置新对象的__proto__属性指向构造函数的prototype对象
 obj.__proto__ = Constructor.prototype;
 
 // 使用新对象调用函数,函数中的this被指向新实例对象
 let r = Constructor.apply(obj, arguments);
 
 // 返回this指针. 当存在显示的返回时, 返回return后面的内容.新建的空对象作废.
 return obj instanceof Object ? r : obj;
}

Copyright: 采用 知识共享署名4.0 国际许可协议进行许可

Links: https://demongao.com/2020/05/javascriptnew的实现原理

Buy me a cup of coffee ☕.