function create() {
let obj = new Object(); // 1.创建一个空对象
let Constructor = [].shift.call(arguments);
obj.__proto__ = Constructor.prototype; // 2.将空对象的原型对象指向构造函数的原型
let result = Constructor.apply(obj, arguments); // 3.将构造函数的this指向该对象,执行构造函数,给对象添加属性和方法
return typeof result === 'object' ? result : obj; // 4.返回这个对象
}
function Man(name,age){
this.name = name;
this.age = age;
}
let boy = create(Man, 'john', 18);
console.log(boy);
网友评论