`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);`複製代碼