Почему объект числа не преобразовывается в строку? Ведь я в прототипе определил метод toString
:
Number.prototype.toString = function() {
return "wrwer";
}
var a = 5;
console.log(a + '');
Метод вы переопределили, и вызов его вручную выдаёт нужный результат:
Number.prototype.toString = function() {
return "wrwer";
}
var a = 5;
console.log(a.toString());
Однако при использовании оператора сложения метод toString
не вызывается.
Как этот оператор работает можно посмотреть в спецификации ECMAScript.
В частности, так как один из операндов (''
) является строкой, то второй (a
) тоже приводится к строке. Но делается это с помощью абстрактной операции ToString, которая, применительно к числам, формирует строку по описанному в спецификации алгоритму, не вызывая метод toString
.
Стандартная реализация метода Number.prototype.toString
использует внутри себя ToString
, если в качестве основания системы счисления в toString
передано 10
(или ничего не передано - 10
является значением по умолчанию). В противном случае (при основании от 2
до 9
и от 11
до 36
) алгоритм зависит от реализации в конкретном браузере, но вряд ли сильно отличается от стандартного.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Недавно начал писать расширения для chromeМне нужно, чтобы, например, при нажатии в расширении на кнопку, на внешней странице исполнялся JS код
Есть html страница с JavascriptНа десктопных устройствах все работаем корректно
Скрипт заработал, но не совсем правильно, а то есть наоборот сначала загружается версия css/weak-sightedcss а нужно чтобы сначала подгружались стандартные...
Прикрутил мобильное меню и после перехода по нему страница не скролиться и меню криво работаетПосле обновления страницы опять все работает...