奇妙な instanceof
重要性: 5
なぜ下の instanceof は true を返すのでしょう? a が B() によって作られたものでないことは簡単に分かります。
function A() {}
function B() {}
A.prototype = B.prototype = {};
let a = new A();
alert( a instanceof B ); // true
はい、確かに奇妙に見えます。
しかし、instanceof は関数を気にするのではなく、プロトタイプチェーンに対してマッチする prototype について気にします。
そして、ここでは a.__proto__ == B.prototype なので、instanceof が true を返します。
従って、instanceof のロジックに基づいて、prototype は実際にはコンストラクタ関数ではなく型を定義します。