在 JavaScript 中,new
操作符用于创建对象实例。它实际上是一个语法糖,它创建一个空对象并将其传递给构造函数,以便在构造函数内部初始化它。
实现原理
function myNew(constructor, ...args) {
const instance = Object.create(constructor.prototype);
const result = constructor.apply(instance, args);
return (typeof result === 'object' && result !== null) ? result : instance;
}
这个函数的实现与 new
操作符的行为相似。它接受构造函数和参数,并返回一个新的对象实例。如果构造函数返回一个对象,则返回该对象,否则返回新创建的对象实例。
这个函数的具体步骤如下:
- 创建一个空对象
instance
,并将它的原型设置为构造函数的原型。 - 调用构造函数并传递
instance
和参数。 - 如果构造函数返回一个对象,则返回该对象。
- 否则,返回新创建的对象实例
instance
使用这个函数来创建一个对象实例的例子:
function Person(name, age) {
this.name = name;
this.age = age;
}
const person = myNew(Person, 'Tom', 30);
console.log(person); // {name: 'Tom', age: 30}