`app
function Foo(name,age){
this.name = name
this.age = age
}
//先搞清楚new关键字作了什么
//1.建立一个新对象
//2.改变this的指向,将构造函数中的this指向这个新对象
(并将这个新对象中的原型指向构造函数的原型对象)
//3.执行构造函数里面的代码
//4.返回这个新对象
function achieveNew() {
let obj = {
__proto__:Foo.prototype
};
let argus = [].slice.call(arguments);
// Foo.call(obj,...argus);
//上一句使用的是扩展运算符,也能够用apply实现
Foo.apply(obj,argus)
return obj;
}
var a = achieveNew('lb',23);
console.log(a);`复制代码