我做這樣一個經典的JavaScript對象初始化,它就像一個魅力:爲什麼此對象初始化工作?
function Hero(a, n) {
this.nom = a;
this.job = n;
this.quiSuisJe = function() {
return "Mon nom est "+this.nom+" et je suis un "+this.job;
}
}
var x = new Hero("Joe", "Ninja");
var y = new Hero("Jinx", "Carry AD");
console.log(x.quiSuisJe());
console.log(y.quiSuisJe());
但是,如果我改變這樣的quiSuisJe
功能:
function Hero(a, n) {
this.nom = a;
this.job = n;
this.quiSuisJe = function() {
return "Mon nom est "+a+" et je suis un "+n;
}
}
var x = new Hero("Joe", "Ninja");
var y = new Hero("Jinx", "Carry AD");
console.log(x.quiSuisJe());
console.log(y.quiSuisJe());
它的工作原理。爲什麼?
關閉。內部函數是閉包,它可以訪問父函數變量。另請注意,內部函數是爲每個實例創建的。 – Tushar
現在嘗試'x.nom =「qwerty」; X。 quiSuisJe();'看看會發生什麼。 – epascarello