【发布时间】:2010-11-23 09:43:40
【问题描述】:
我正在使用 Prototype.js(来自 www.prototypejs.org)库来创建由子类扩展的类。不过,我在这些类的实例中使用数组时遇到了麻烦。我做了一个例子来说明这一点:
var SuperClass = Class.create({
initialize: function(id) {
this.id = id;
}
});
var SubClass = Class.create(SuperClass, {
items: [],
add: function(arg) {
this.items[this.items.length] = arg;
},
initialize: function($super, id) {
$super(id);
}
});
var a = new SubClass("a");
var b = new SubClass("b");
a.add("blah");
alert(a.id + ": " + a.items.length);
alert(b.id + ": " + b.items.length);
这里的问题是,第一个和第二个警报都将表明它们各自的对象在它们的 items 数组中有 1 个项目,即使我只向对象 a 添加了一个项目。原始数据类型可以正常工作(如正确显示的 id 属性所示),但数组无法正常工作。我是否将 items 数组和 add 方法移动到超类也没关系,我已经尝试过了。
有没有办法让它工作?这是 Prototype 中的错误还是 JavaScript 的本质? :-)
【问题讨论】:
标签: javascript arrays class prototypejs