Страницы

Поиск по вопросам

суббота, 23 марта 2019 г.

В чем разница между valueOf и toString

В чем разница между ними? И то, и то выводит нам строку, которую мы указывает в return, при том valueOf, если явно указано, затирает toString Почитал пару источников, но так и не понял разницы. Если можно, поподробнее, пожалуйста.


Ответ

Рискну предположить что Вы имеете ввиду функции valueOf и toString Разница между ними чуть размыта, но понятна:
valueOf используется для численного преобразования объекта (foo + 42, ++bar, etc.). Но есть он далеко не у всех объектов (т. е. есть, но возвращает сам объект, поэтому игнорируется) и обязан возвращать примитив, иначе будет проигнорирован и будет вызван toString toString используется для строкового преобразования объекта (alert(foo)). Есть у всех объектов, обычно не очень информативен ([object Object]), но очень удобен, если нужно перегрузить оператор, например (в JS нет перегрузки/создания операторов). Тоже обязан вернуть примитив.
Читать подробнее У использования этих операторов есть нюансы (как везде в JS, наверное, экой коварный язык однако!), которые проще узнать из спецификации.
www.ecma-international.org whatwg.org ES5 на русском Отличный учебник JS

Комментариев нет:

Отправить комментарий