Преобразование числа в строку методом toString

239
04 ноября 2017, 16:13

Почему объект числа не преобразовывается в строку? Ведь я в прототипе определил метод toString:

Number.prototype.toString = function() { 
  return "wrwer"; 
} 
var a = 5; 
console.log(a + '');

Answer 1

Метод вы переопределили, и вызов его вручную выдаёт нужный результат:

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) алгоритм зависит от реализации в конкретном браузере, но вряд ли сильно отличается от стандартного.

READ ALSO
Исполнение JS-кода из расширения для chrome

Исполнение JS-кода из расширения для chrome

Недавно начал писать расширения для chromeМне нужно, чтобы, например, при нажатии в расширении на кнопку, на внешней странице исполнялся JS код

229
Как сделать отладку Javascript для устройств на Android

Как сделать отладку Javascript для устройств на Android

Есть html страница с JavascriptНа десктопных устройствах все работаем корректно

270
Изменить код скрипта

Изменить код скрипта

Скрипт заработал, но не совсем правильно, а то есть наоборот сначала загружается версия css/weak-sightedcss а нужно чтобы сначала подгружались стандартные...

206
Не коректно работает часть javascript в ruby on rails

Не коректно работает часть javascript в ruby on rails

Прикрутил мобильное меню и после перехода по нему страница не скролиться и меню криво работаетПосле обновления страницы опять все работает...

186