目前我正在尝试使用John Resigs Simple Javascript Inheritence库,这很有效,但是当我尝试修改默认成员变量时,它似乎影响原型而不仅仅是实例:
如您所见,每次创建新实例时,事件的长度都不同。我是以错误的方式使用图书馆还是这是一个众所周知的缺陷?有哪些替代方案?
答案 0 :(得分:2)
这里的问题是您使用events: []
数组(和{}
对象)变量是引用。因此,通过使用数组扩展类,类的每个实例都将具有等于相同引用数组的events
。
要解决这个问题,你可以做到
var Test = Class.extend({
events: null,
init: function() {
this.events = [];
this.events.push(1);
alert(this.events.length);
},
say: function(words) {
}
});
这样,每次初始化一个类时,都会为events
指定一个新数组(因此引用)。我知道,不优雅,但它应该有用。