function _new(Func, ...args){
//1.创建实例对象
// let obj = {};
//2.给obj.__proto__赋值
// obj.__proto__ = Func.prototype; __proto__在IE中不兼容
// 优化创建:let obj = Object.create(Func.prototype);
//3.把方法执行,让里面的this是实例对象
let result = Func.call(obj, ...args);
//4.分析返回结果
if(result!==null && /^(object|function)$/.test(typeof result)) return result;
return obj;
}
// 1.创建一个空对象
var obj = new Object()
// 2.将空对象的原型赋值为构造函数的原型
obj.__proto__ = Perons.prototype
// 3.变更构造函数内部this,将其指向刚刚创建出来的对象
Perons.call(obj)
// 4.返回对象
return obj
相关文章参考: