Как переопределить (или переписать?) Встроенную функцию Javascript - PullRequest
0 голосов
/ 04 февраля 2019

В целях модульного тестирования мне нужно перезаписать Number.prototype.toLocaleString(), чтобы он всегда вызывался с en-US, а не с поведением по умолчанию.Я понимаю, перезаписывая обычную встроенную функцию, которая получает параметр, но toLocaleString() не принимает число для преобразования в строку непосредственно в качестве параметра, поэтому я запутался здесь.

Я попробовал следующее:

Number.prototype.toLocaleStringTest = Number.prototype.toLocaleString
Number.prototype.toLocaleString = function() { this.toLocaleStringTest('en-US') }

Но результат этой новой функции toLocaleString() всегда равен undefined.Новая функция, безусловно, вызывается, кстати, я обеспечил это путем добавления временного console.log("I am called!") в реализацию.

Что я делаю не так - или я пытаюсь достичь чего-то, что не выполнимо?

1 Ответ

0 голосов
/ 04 февраля 2019

Вы были очень близко ... Не хватало только return ...: -)

Number.prototype.toLocaleStringTest = Number.prototype.toLocaleString
Number.prototype.toLocaleString = function() {
  return this.toLocaleStringTest('en-US')
}
n = 123456.789;
console.log(n.toLocaleString());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...