function _new(){
//获取_new第一个参数,也就是构造函数,是自己传的。
var constructor1 = Array.prototype.shift.call(arguments);
//构造函数.prototype == 实例对象.__proto__
var obj = Object.create(constructor1.prototype);
console.log(obj.__proto__==constructor1.prototype)//true
//构造函数里的this指向实例对象,result是constructor1也就是构造函数返回值。
var result = constructor1.apply(obj, arguments);
console.log(result)//undefined 或者 {name:'youmengting'}
//返回值是一个对象类型
return result instanceof Object? result : obj;
}
const Person =function(name){
this.name=name;
this.eat = function(){
console.log(this.name+"爱吃巧克力");
}
Person.prototype.run=function(){
console.log(this.name+"爱跑步");
}
// return {
// name:'youmengting'
// }
}
let p = _new(Person,'小明');//Person {name: '小明', eat: ƒ}
p.eat();
p.run();
1:创建一个对象 {},
2:父.prototype == 子.__proto__
3:构造函数里的this指向实例对象.
4:返回值是一个对象类型.