继承 - 实例变量

时间:2012-04-30 10:00:41

标签: javascript inheritance prototypejs openlayers

我偶然发现了我认为奇怪的行为,这可能只是我对javascript继承如何运作的误解......

我正在使用OpenLayers,它基于prototypejs来创建类和子类。我希望在超类中声明的字段将成为类或子类的每个实例化中的单独对象。但是,情况似乎并非如此,您可以在下面的示例中看到。

超类MySuperClass定义字段collection但是即使我构造了这个类的多个实例,并且通过子类,字段collection似乎是共享的,就好像它是{ {1}}?

为什么会如此,如何在超类的定义中安全地创建实例变量?

static

1 个答案:

答案 0 :(得分:0)

我不太确定这个,但我想这是因为你初始化了类中的collection字段。请注意,该类只是一个对象,而不是一个函数。如果你想让它在实例级别,你应该在构造函数中初始化它,如果是OpenLayers它是initialize。我在jQuery UI中观察到类似的行为,并从面向对象的语言中发现,我发现这种混淆。