Как можно определить, как объекты сравнены в JavaScript

7
задан Peter Hilton 14 January 2009 в 09:48
поделиться

4 ответа

JavaScript не имеет перегрузки оператора. См. это обсуждение покрытие Вашего вопроса.

6
ответ дан 6 December 2019 в 23:14
поделиться

Не в очевидном способе...

Foo = function (value){
    this.value = value;
};

Переопределение toString функция Вашего собственного объекта:

Foo.prototype.toString = function( ){ return this.value.toString(); }

Создание двух тестовых объектов:

foo1 = new Foo(1);
foo2 = new Foo(1);

, Если значения Ваших объектов строки или числа, у Вас может быть механизм JavaScript для преобразования объектов в строку путем добавления их к пустой строке:

alert( ""+foo1 === ""+foo2 ); //Works for strings and numbers

то же самое, но инструмент для очистки:

alert( foo1.toString() === foo2.toString() ); //Works for strings and numbers

, Если значения Ваших объектов является числовым только, можно использовать унарное + оператор для преобразования объекта в число:

alert( +foo1 === +foo2 ); //Works for numbers

Однако я рекомендую Вам и определить toString как выше и также равняние:

Foo.prototype.equals=function(b){return this.toString() === b.toString();}

И затем называют его как это:

alert ( foo1.equals(foo2) );

, Так как Вы теперь определили toString, Вы можете:

alert(foo1); // Alerts the value of foo1 instead of "[Object object]"
alert("foo1: " + foo1); // Alerts "foo1: 1". Useful when debugging. 
4
ответ дан 6 December 2019 в 23:14
поделиться

Я не думаю, что это - возможное использование JavaScript. Необходимо записать собственную функцию, например, isEqual()

1
ответ дан 6 December 2019 в 23:14
поделиться

JavaScript в этом отношении похож на свой Java тезки: Никакая перегрузка оператора. Используйте пользовательский метод как equals() вместо этого.

0
ответ дан 6 December 2019 в 23:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: