2017-11-05 1 views
-1

は、私はテストが(「条件は(両方)があれば)がtrueを返すようにこれは私がこれまで試したものですアレイプロトタイプ

function X(x) { 
 
    this.x = x; 
 
} 
 

 
function Y(y) { 
 
    this.y = y; 
 
} 
 

 
var x = new X(1); 
 
var y = new Y("abc") 
 

 
if (y instanceof X) 
 
    console.log("true"); 
 

 
if (x instanceof Y) 
 
    console.log("true");

コードを変更しようとしています、しかし、私は正しい結果を得ていない。

function X(x) { 
 
    this.x = x; 
 
} 
 

 
function Y(y) { 
 
    this.y = y; 
 
} 
 

 
X.prototype = Object.create(Y.prototype); 
 
X.constructor = X; 
 

 
var x = new X(1); 
 
var y = new Y("abc"); 
 

 
if (y instanceof X) 
 
    console.log("true"); 
 
if (x instanceof Y) 
 
    console.log("true");

私はどちらも1つだけオブジェクト変数を変更することができません。両方の結果をtrueに戻そうとしています。

+3

それは不可能です。双方向継承はできません。あなたのようなことは、あなたのお父さんの父親になることはできません。しかし、あなたはおそらくinstanceofオペレーター –

+0

@ JonasWをトリックできる可能性があります。私は本当に熱心に試みました。彼らはいくつかのコードを追加することができると述べましたが、あなたの結果は両方のケースで真実を返すべきです。 – jMoore

答えて

0

私は、唯一の方法は、instanceofは出てだますことです前に言ったように:

function A(){ 
    return Object.create(B.prototype); 
} 

function B(){ 
    return Object.create(A.prototype); 
} 

あなたがクロスBから継承して作成した継承するので、すべての要素、およびその逆を持ってその方法。 Try it

+0

W。本当にありがとう。 – jMoore

+0

@ d.aparna youreようこそ;) –