有没有办法在JavaScript类的每个实例中创建一些相同类型的变量(没有全局变量)?
例如:
function Class(){
this.foo = 'bar';
this.setText = setText;
this.getText = getText;
}
function setText(value){
this.foo = value;
}
function getText(){
alert(this.foo);
}
现在我创建两个相同类的实例,如下所示:
var fruit = new Class();
var groceries = new Class();
当我在课程水果中更改foo的值时,我也希望在杂货中更改它。
fruit.setText("apple");
fruit.getText(); //alerts apple
groceries.getText(); //SHOULD also alert apple
我正在动态创建一个类的实例,它们没有像示例中那样的明确的变量名称(水果,杂货)。
谢谢!
答案 0 :(得分:9)
是的,绝对是,只需在函数本身上使用一个属性:
Class.text = 'apple'
Class.prototype.getText = function () { return Class.text; }
Class.prototype.setText = function (text) { Class.text = text; }
答案 1 :(得分:1)
另一种方法,使用闭包:
var Class = (function () {
var foo = "bar";
function Class(){
this.setText = setText;
this.getText = getText;
}
function setText(value){
foo = value;
}
function getText(){
alert(foo);
}
return Class;
}());
var fruit = new Class();
var groceries = new Class();
在这种情况下, foo
类似于私有静态属性,不能从外部获得。