使用John Resigs简单javascript继承修改类属性

使用John Resigs简单javascript继承修改类属性,javascript,Javascript,目前我正在尝试使用John Resigs Simple Javascript继承库,这非常有效,但当我尝试修改默认成员变量时,它似乎会影响原型,而不仅仅是实例: 如您所见,每次创建新实例时,事件的长度都不同。我是以错误的方式使用库,还是这是一个已知的缺陷?有哪些替代方案?这里的问题是您正在使用事件扩展类:[] 数组(和{}对象)变量是引用。因此,通过使用数组扩展该类,该类的每个实例都将有一个events等于相同的引用数组 要想避开这一点,你可以这样做 var Test = Class.exte

目前我正在尝试使用John Resigs Simple Javascript继承库,这非常有效,但当我尝试修改默认成员变量时,它似乎会影响原型,而不仅仅是实例:


如您所见,每次创建新实例时,事件的长度都不同。我是以错误的方式使用库,还是这是一个已知的缺陷?有哪些替代方案?

这里的问题是您正在使用
事件扩展类:[]

数组(和
{}
对象)变量是引用。因此,通过使用数组扩展该类,该类的每个实例都将有一个
events
等于相同的引用数组

要想避开这一点,你可以这样做

var Test = Class.extend({
    events: null,

    init: function() {
        this.events = [];
        this.events.push(1);
        alert(this.events.length);
    },

    say: function(words) {

    }
});
这样,每次初始化一个类时,都会为
事件指定一个新数组(即引用)。我知道这不优雅,但应该有用