模拟实现new

    技术2022-07-12  76

    要想弄清楚这个问题,一定要知道new()之后发生了什么?

    创建一个空对象让this指向新对象,执行构造函数的代码,给这个新对象添加属性和方法设置原型链,新对象的__proto__指向构造函数的prototype对象判断:如果传入对象的类型是一个对象,返回新对象;反之,直接返回 function objectFactory() { const obj = {}; // 创建一个空对象 const Constructor = [].shift.call(arguments); const result = Constructor.apply(obj, arguments); // 执行构造函数 obj.__proto__ = Constructor.prototype; // 设置原型链 return typeof(result) === Object ? result : obj; }
    Processed: 0.016, SQL: 9