1

私がこのコードを持っている場合:

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;
}

これは、関数の引数がクラスのインスタンスと同じであるかどうか、またはクラスの他のインスタンスであるかどうかを確認するために期待どおりに機能しfooますか?そうでない場合、私が望む結果を得るために私は何をすべきですか?foo1foo2foo

4

1 に答える 1

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

ここで自分を見てください。

于 2012-04-28T19:50:12.823 に答える