Skip to content

手写代码

手写 new 操作符

new 操作符在 JavaScript 中用于创建一个用户定义的对象类型的实例。它的工作步骤如下:

  1. 首先创建了一个新的空对象
  2. 设置原型,将对象的原型设置为函数的 prototype 对象。
  3. 让函数的 this 指向这个对象,执行构造函数的代码(为这个新对象添加属性)
  4. 判断函数的返回值类型,如果是值类型,返回创建的对象。如果是引用类型,就返回这个引用类型的对象。
javascript
function myNew(obj, ...args) {
  // 1. 创建一个新的空对象
  // 2. 将这个新对象的原型指向构造函数的 prototype 属性
  const newObject = Object.create(obj.prototype)

  // 3. 将构造函数内部的 this 绑定到这个新对象上,并执行构造函数的代码
  const result = obj.apply(newObject, args);

  // 4. 如果构造函数返回一个对象,则返回该对象;否则,返回新创建的对象
  return result instanceof Object ? result : obj;
}