Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   преобразование объекта (https://javascript.ru/forum/misc/21333-preobrazovanie-obekta.html)

float 05.09.2011 19:18

преобразование объекта
 
чет пробился несколько часов, так и не смог сделать такое поведение у объекта:
+foo // 1 (1)
foo+'' // 'number' (2)

фишка в том, что если задан valueOf он также вызавается во втором случае и получается '1', а чтобы получить 'number', надо вручную прописывать toString, что не очень элегантно:(

Андрей Параничев 05.09.2011 19:38

В чем не элегантно? valueOf() и toString() по-сути оба возвращают элементарное значение.

Но при приведении типов в случае использования объекта, как int, вызывается valueOf(), а при конкатенации строк вызывается toString().

Добавлено:
Нет, оказывается приоритет дается valueOf(), если даже toString() определен отдельно.
Тогда получается, что решить задачу с такой перегрузкой не получится.

float 05.09.2011 19:45

Цитата:

Нет, оказывается приоритет дается valueOf(), если даже toString() определен отдельно.
Да вот и я о том же.
Хотел, чтобы объект можно было сравнивать и с числом и со сторокой.
obj == 1 // true
obj == 'number' // true


Часовой пояс GMT +3, время: 11:58.