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相同foo1或不同?如果没有,我应该怎么做才能得到我想要的结果?foo2foo

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 回答