преобразование объекта
чет пробился несколько часов, так и не смог сделать такое поведение у объекта:
+foo // 1 (1) foo+'' // 'number' (2) фишка в том, что если задан valueOf он также вызавается во втором случае и получается '1', а чтобы получить 'number', надо вручную прописывать toString, что не очень элегантно:( |
В чем не элегантно? valueOf() и toString() по-сути оба возвращают элементарное значение.
Но при приведении типов в случае использования объекта, как int, вызывается valueOf(), а при конкатенации строк вызывается toString(). Добавлено: Нет, оказывается приоритет дается valueOf(), если даже toString() определен отдельно. Тогда получается, что решить задачу с такой перегрузкой не получится. |
Цитата:
Хотел, чтобы объект можно было сравнивать и с числом и со сторокой. obj == 1 // true obj == 'number' // true |
Часовой пояс GMT +3, время: 11:58. |