JavaScript类的所有实例中的相同变量

时间:2014-02-12 14:29:26

标签: javascript class variables object

有没有办法在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

我正在动态创建一个类的实例,它们没有像示例中那样的明确的变量名称(水果,杂货)。

谢谢!

2 个答案:

答案 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类似于私有静态属性,不能从外部获得。