2012-04-28 2 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; 
} 

Будет ли это работать, как и ожидалось, чтобы убедиться, является ли аргумент функции foo такой же, как foo1 и не foo2 или любой другой экземпляр класса foo? Если нет, что мне делать, чтобы получить результат, который я хочу?

+2

Если вы проверяете, что они тот же экземпляр, то да, это работает. Разве это не работало, когда вы это пробовали? –

+1

Ну, вы попробовали? –

+0

Я не знаю, почему люди поднимают такие вопросы. Пользователь 12k должен знать, как выполнить базовые исследования и тестирование, прежде чем задавать такой вопрос. –

ответ

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.

Смежные вопросы