new 的作用:
实现:
function myNew() { // 1.创建空对象 let obj = {}; let constructor = [...arguments][0]; let params = [...arguments].slice(1); // 2.空对象的原型指向构造函数的原型 obj.__proto__ = constructor.prototype; // 3.执行构造函数的代码 var ret = constructor.apply(obj, params); // 4.判断返回值类型: // 如果是基本值类型,则返回的创建的'空对象' // 如果是引用类型,则返回这个引用类型的对象 var flag = ret && ret instanceof Object; return flag ? ret : obj; } // test function A(name) { this.name = name; } var a1 = myNew(A, 'Lee'); var a2 = new A('Lee'); console.log(a1, a2);
本文作者:前端小毛
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!