function _new(target,...args){
// 定义一个返回的对象
let obj = {};
if(target.prototype !== null){
// 对象的原型对象指向目标的构造函数
obj = Object.create(target.prototype);
}
// 将this指针指向返回的对象
const result = target.apply(obj,args);
if((typeof result === ('object' || 'function')) && result !== null){
console.log("返回值:"+result)
// 如果返回值是function或者object(不是null),返回返回值;
return result;
}
return obj;
}
function Person (name,age){
this.name = name;
this.age = age;
this.say = function () {
console.log("I am " + this.name)
}
return 1;
}
//通过new创建构造实例
let person1 = new Person("Curry",18);
console.log(person1.name); //"Curry"
console.log(person1.age); //18
person1.say(); //"I am Curry'
console.log(person1);
//通过realize()方法创造实例
let person2 = _new(Person,"Curry",18);
console.log(person2.name); //"Curry"
console.log(person2.age); //18
person2.say();
console.log(person2);
04-30
1594
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
08-16