JavascriptでAnimalとZebraという2つの機能クラスを作成したいと思います。クライアントスクリプトは、ゼブラをインスタンス化することです、とシマウマは、動物から関数を参照して呼び出すことができるはずです。Javascript(jQuery)で「基本クラス」関数を呼び出す方法は?
ゼブラ:私は動物にベースを作るためにjQuery $.extend()
を使用します。ここで、動物
はこのように、私は、次のことを試してみましたゼブラのクラス:しかし、私だけ見
I am a zebra
But I am also an animal
:
Animal = function() {
function hi_animal() {
console.log('But I am also an animal');
}
return {
hi_animal: hi_animal
}
}
Zebra = function() {
$.extend(this, Animal);
function hi_zebra() {
console.log('I am a zebra!');
hi_animal();
}
return {
hi_zebra: hi_zebra
}
}
$(document).ready(function() {
var my_zebra = new Zebra();
my_zebra.hi_zebra();
});
ブラウザログは、次の2行が表示されるはずです
I am a zebra!
Uncaught ReferenceError: hi_animal is not defined
ここにはfiddleがあります。
私には何が欠けていますか?
良い代替。私は鉱山を冗長にしていたので、何が起きているのかがOPにはもう少し分かりました。 –
私が理解していることを確認するため、これはその状況では軽いですが、Animal.prototypeに関数を追加するほど、扱いにくくなります。なぜなら、それぞれに 'Zebra.prototype.hi_animal = Animal.prototype.hi_animal; 'を繰り返さなければならないからです。 –
@ Cristol.GdM確かに、それを適用する関数を作成します。例えば。私はmakeControl、makeWindow、makeDraggableという関数を持っているかもしれません。そして、makeDraggableWindow = makeWindow + makeDraggableのような複数の継承を持つことさえできます。 makeDraggableControl = makeControl + makeDraggable。 – Keith