- 创建一个新对象。
- 将新对象的原型指向构造函数的 prototype 属性。
- 执行构造函数,将 this 绑定到新对象上,传递参数。
- 如果构造函数返回一个对象,则返回该对象;否则返回新创建的对象。
下面是一个简单的示例实现:
function myNew(fn, ...args) {
const obj = Object.create(fn.prototype);
const result = fn.apply(obj, args);
return result instanceof Object ? result : obj;
}
这个函数接受一个构造函数和一些参数,返回一个实例化的对象。
例如,使用以下代码可以实例化一个 Person 对象:
function Person(name, age) {
this.name = name;
this.age = age;
}
const person = myNew(Person, 'Alice', 20);
console.log(person); // Person { name: 'Alice', age: 20 }