我像这样做一个经典的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());
有效。为什么呢?
答案 0 :(得分:0)
构造函数仍然是一个函数,所以既然你已经在其中声明了一个函数,那么你基本上就创建了一个闭包。这意味着在这个新函数中,您可以访问顶级函数的属性。当然,仅仅因为你可以访问它,并不意味着你应该像这样使用它。请尝试使用this
,就像您在第一个示例中一样。