感谢。
function Personne(nom){
this.nom = nom;
var banque = 1500;
this.add = function(number){
banque = banque + number
}
this.getCpte = function() {
return banque
}
}
Personne.prototype.min = function(number){
banque = banque - number
}
var me = new Personne('albert')
console.log(me)
me.add(500)
me.min(500) // got banque is undefined
console.log(me.getCpte())
答案 0 :(得分:1)
banque
是Personne
中的局部变量,您无法从外部访问它。将min
置于构造函数中以使其成为与其他方法类似的特权方法,或者使banque
成为.nom
之类的属性。
或者只是通过add
方法执行所有操作:
Personne.prototype.min = function(number) {
this.add(-number);
};
答案 1 :(得分:0)
您可以为banque
设置一个getter,以便您可以使用原型。您似乎已经使用getCpte
完成了此操作。只需使用该函数获取banque
的值,并在原型函数赋值中使用它。如果您要修改banque
函数之外的值,则还需要Personne
的设置器(这会使banque
基本上公开。要解决此问题,请设置min
如果可能的话,在构造函数中的函数):
function Personne(nom){
this.nom = nom;
var banque = 1500;
this.add = function(number){
banque = banque + number
}
this.getCpte = function() { //banque getter
return banque
}
this.setCpte = function(value) { //banque setter
banque = value;
}
}
Personne.prototype.min = function(number){
this.setCpte(this.getCpte() - number) //set to banque - number
}
var me = new Personne('albert')
console.log(me)
me.add(500)
me.min(500)
console.log(me.getCpte())
这增加了一个函数setCpte
,它是banque
的setter。这样,我们就可以使用this.setCpte(value)
,其中value是设置为banque
的值。由于你做了banque - number
,我们可以使用getter去除ReferenceError,并从中减去数字。