JavaScript手动实现new操作符
手动实现JavaScript中new操作符的功能
创建新对象使用new操作符,以这种方式调用构造函数实际上经历了以下几个步骤
① 创建一个新对象
② 将构造函数的作用域赋给新对象(因此this就指向了这个新对象)
③ 执行构造函数中的代码(为这个新对象添加属性)
④ 返回新队形
function newTarget() {
// 创建一个空对象
const obj = {};
// 获取需要创建对象对应的构造函数,和其他参数
const [Con, ...args] = arguments;
// 将当前对象挂接到原型链
Object.setPrototypeOf(obj, Con.prototype);
// 调用构造函数,绑定this为object
const result = Con.apply(obj, args);
// 判断是否在构造函数中返回了对象,来显示对应的结构
return (typeof result === 'object') ? result : obj;
}