2012-04-28 8 views
1

私はこのコードを持っている場合:javascriptオブジェクトの平等?

var foo1 = new Foo(); 
var foo2 = new Foo(); 

を、私はこれをしたい:

function updateFoo1 (foo) 
{ 
    if (foo === foo1) //If foo is foo1 
    { 
     //code for processing 
     return true; 
    } 
    else //Foo must be foo2 or another instance of foo not foo1 
    return false; 
} 

ウィル関数の引数foofoo1なくfoo2と同じであるかどうかを確認するために、予想通り、この作品またはfooクラスの他のインスタンス?そうでない場合は、私が望む結果を得るために何をすべきですか?

+2

あなたは、彼らが同じインスタンスだとテストしている場合は、はい、それは動作します。あなたはそれを試したときに動作しませんでしたか? –

+1

さて、試してみましたか? –

+0

私は人々がなぜこのような質問をupvoteするのか分かりません。そのような質問をする前に、基本的な研究とテストを行うことを知っておく必要があります。 –

答えて

2
function Foo(){} 
var foo1 = new Foo(); 
var foo2 = new Foo(); 
console.log(foo1===foo2); // always false 

オブジェクト比較のでfoo1が異なる参照を返すとfoo2戻り、別の参照オブジェクトの参照によって行われています。あなたのケースでは

function updateFoo1(foo) 
{ 
    if (foo === foo1) 
    { 
     //code for processing 
     return true; 
    } 
    else return false; 
} 
updateFoo1(foo1) // first if condition will work and will return true 
updateFoo1(foo2) // else condition will work and will return false 

See yourself here.