- 1.创建一个空对象
obj - 2.指定this, 执行构造函数
- 3.指定公共空间:
- 函数都写在公共空间
prototype - 修改空对象
obj的_ proto _
- 函数都写在公共空间
- 4.return
obj
封装
function myNew(construct: Function, ...args: any[]) {
// 创建一个空对象
const obj = {};
// 修改空对象的原型链
obj.__proto__ = construct.prototype;
// 执行构造函数并将构造函数this指向空对象
construct.call(obj, ...args);
return obj;
}
测试
function Person(name) {
this.name = name;
}
Person.prototype.say = function () {
console.log("My name is", this.name);
};
const c = myNew(Person, "jack");
c.say();