Получение значения внутри Javascript toString - PullRequest
0 голосов
/ 22 декабря 2018

У меня очень простой вопрос.

В Javascript

"hello" + function () {}

напечатает "hellofunction () {}"

, потому что Function.prototype вызовет свой собственный метод toString и вернет "function () {}"

Теперь я хочупереопределить метод toString следующим образом:

Function.prototype.toString = function(){
return "my" + SOME_PROPERTY + "output"
}

Внутри этого пользовательского метода я хочу получить function(){} Я хочу знать, как получить это текущее значение внутри метода toString, поскольку я не могу снова выполнить toStringкак это будет происходить в рекурсии.

Я хочу, чтобы окончательный вывод как:

"myfunction(){}output"

1 Ответ

0 голосов
/ 22 декабря 2018

Сохраняя ссылку на оригинальную Function.prototype.toString функцию, вы можете .call ее позже, внутри своего пользовательского toString, предоставляя желаемый результат и избегая рекурсии:

const origToString = Function.prototype.toString;
Function.prototype.toString = function(){
  return "my" + origToString.call(this) + "output"
}
console.log("" + function(){});
...