JavaScript の達人、ここにあなたのためのパズルがあります:
function aFunc(){}
function bFunc() {}
aFunc.prototype = bFunc.prototype;
a = new aFunc();
console.log(a instanceof bFunc); //true!
なぜa
のインスタンスbFunc
ですか?
もしそうなら、私はこれを理解することができました:
function aNext(){}
function bNext(){}
aNext.prototype = new bNext();
a = new aNext();
console.log(a instanceof bNext);
..しかし、プロトタイプでは、私には非常に奇妙に思えます。上記のプロトタイプ コードの実用的なアプリケーションは、Professional JavaScript for Web Developers book (ch 6、最後のページ) にあります。
編集: Blender に感謝しますが、ここにそれぞれ新しい謎があります: 単一の同じオブジェクトから継承された 2 つのオブジェクトがある場合、それらは互いにインスタンスです (ただし、それらは完全に異なります)!
function Horse(){} //class chain can be very long
function Pig(){}
Horse.prototype = Object.prototype;
Pig.prototype = Object.prototype;
a = new Pig();
console.log(a instanceof Horse); //true!
どうすれば問題を解決できますか? 豚がすべて動物である場合(過去に同じプロトタイプを持っている場合)、豚が馬ではないことをどのように判断できますか?