如果我有这段代码:
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
相同而不是foo2
或foo
类的任何其他实例?如果没有,我该怎么做才能得到我想要的结果?
答案 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