私はディーン・エドワードの 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());
基本的に、配列を持つ中間の親を使用して、3 レベルの階層 (最年長の親が必要かどうかは不明) を作成します。2 つの別個の子インスタンスが継承された配列に何かを追加すると、両方の子に表示されます。上記のコードがコンソールに出力されると思います:
["dogs"]
["mice"]
代わりに、次のように出力します。
["dogs", "mice"]
["dogs", "mice"]
何か不足していますか?これは意図的なものである可能性がありますが、型付き言語 OO の観点からすると、それが本来の動作方法ではないことは確かです。誰かが上記を行うためのよりエレガントな方法を持っている場合、私はすべて耳にします。
いつものように、大変お世話になりました。