0%

手写New

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function myNew(constructor, ...args) {
// 1. 创建一个新对象,并将其原型指向构造函数的原型
const obj = Object.create(constructor.prototype);

// 2. 执行构造函数,并将this绑定到新创建的对象
const result = constructor.apply(obj, args);

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

// 测试
function Person(name, age) {
this.name = name;
this.age = age;
}

const p1 = myNew(Person, 'Alice', 25);
console.log(p1.name); // 输出: Alice
console.log(p1.age); // 输出: 25
-------------本文结束感谢您的阅读-------------