javascript对象中的平等?

时间:2012-04-28 19:33:36

标签: javascript oop

如果我有这段代码:

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类的任何其他实例?如果没有,我该怎么做才能得到我想要的结果?

1 个答案:

答案 0 :(得分: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.