我用过Dean Edward 的 base.js。我已经用了很多年了,但是论坛已经死了,所以我想我会在这里发帖,看看是否有人知道发生了什么。以下显示了我的问题:
var Animal = Base.extend({
name: "",
constructor: function(name){
this.name = name
},
getName: function(){
this.name
}
});
var Cat = Animal.extend({
prey: [],
getPrey: function(){return this.prey}
});
var Tiger = Cat.extend({});
var House = Cat.extend({});
var cats = [];
cats.push(new Tiger());
cats.push(new House());
cats[0].prey.push("dogs");
cats[1].prey.push("mice");
console.log(cats[0].getPrey());
console.log(cats[1].getPrey());
基本上,它创建了一个三层层次结构(不确定是否需要最年长的父级),中间父级有一个数组。当两个单独的子实例向它们继承的数组中添加一些东西时,它会出现在两个子实例中。我认为上面的代码会在控制台中打印:
["dogs"]
["mice"]
相反,它打印:
["dogs", "mice"]
["dogs", "mice"]
我错过了什么吗?这可能是故意的,但从类型化语言 OO 的角度来看,我很确定这不是事情应该工作的方式。如果有人有更优雅的方式来完成上述操作,我会全神贯注。
一如既往,非常感谢。