function Person(name, age) {
this.name = name;
this.age = age;
}
let a = new Person();
console.log(a); //{name: 'XiaoMing', age: '18'}
//Fun为构造函数, args表示传参
function myNew(Fun,...args){
// 1.在内存中创建一个新对象
//let obj = new Object()
// 2.把新对象的原型指针指向构造函数的原型属性
//obj.__proto__ = Fun.prototype
// 1、2步骤合并
// 创建一个空对象,且这个空对象继承构造函数的 prototype 属性
// 即实现 obj.__proto__ === Fun.prototype
var obj = Object.create(fn.prototype); //ES6
// 3.改变this指向,并且执行构造函数内部的代码(传参)
let res = Fun.apply(obj,args)
// 4.判断函数执行结果的类型
return res instanceof Object ? res : obj
}
let obj = myNew(One, "XiaoMing", "18");
console.log("newObj:", obj);//{name: 'XiaoMing', age: '18'}