javascript 原型和私有变量
javascript prototype and private variable
- 我怎样才能使我的 min 函数正常工作。我得到银行未定义?
谢谢。
- 列表项
- 列表项
- 列表项
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())
您可以为 banque
设置一个 getter,这样您就可以使用原型了。您似乎已经使用 getCpte
完成了此操作。只需使用该函数获取 banque
的值并在原型函数赋值中使用它。如果您想修改 Personne
函数之外的值,您还需要为 banque
使用 setter(这将使 banque
本质上是 public。为了解决这个问题, 如果可能的话在构造函数中设置 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)
,其中值是设置为 banque
的值。既然你做了 banque - number
,我们可以使用 getter 来摆脱 ReferenceError,并从中减去数字。
banque
是Personne
内部的局部变量,不能从外部访问。要么将 min
放入构造函数中,使其成为像其他方法一样的特权方法,要么使 banque
成为 属性,如 .nom
.
或者通过 add
方法完成所有操作:
Personne.prototype.min = function(number) {
this.add(-number);
};
- 我怎样才能使我的 min 函数正常工作。我得到银行未定义?
谢谢。
- 列表项
- 列表项
- 列表项
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())
您可以为 banque
设置一个 getter,这样您就可以使用原型了。您似乎已经使用 getCpte
完成了此操作。只需使用该函数获取 banque
的值并在原型函数赋值中使用它。如果您想修改 Personne
函数之外的值,您还需要为 banque
使用 setter(这将使 banque
本质上是 public。为了解决这个问题, 如果可能的话在构造函数中设置 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)
,其中值是设置为 banque
的值。既然你做了 banque - number
,我们可以使用 getter 来摆脱 ReferenceError,并从中减去数字。
banque
是Personne
内部的局部变量,不能从外部访问。要么将 min
放入构造函数中,使其成为像其他方法一样的特权方法,要么使 banque
成为 属性,如 .nom
.
或者通过 add
方法完成所有操作:
Personne.prototype.min = function(number) {
this.add(-number);
};