实现一个简单的new
实现一个简单的new
new操作符干了什么?自己怎么实现一个new操作符。
创建一个空的简单JavaScript对象(即{});
为步骤1新创建的对象添加属性
__proto__
,将该属性链接至构造函数的原型对象 ;将步骤1新创建的对象作为this的上下文 ;
如果该函数没有返回对象,则返回this。
function _new(ctor, ...args) { if (typeof ctor !== "function") return false; // 创建一个空的简单JavaScript对象(即{}); let obj = {}; // 为步骤1新创建的对象添加属性`__proto__`,将该属性链接至构造函数的原型对象 ; obj.__proto__ = ctor.prototype; // 将步骤1新创建的对象作为this的上下文 let res = ctor.apply(obj, [...args]); // 如果该函数没有返回对象,则返回this,因为typeof null 也是Object,所以还要进行null的判断 return typeof res === "object" && res !== null ? res : obj; }