JavaScript метод Function.prototype.toString()
Определение и применение
JavaScript метод Function.prototype.toString() возвращает строку, представляющую исходный код функции.
Для пользовательских функций метод toString() возвращает строку, содержащую сегмент исходного текста,
который использовался для определения функции. JavaScript вызывает метод toString() автоматически, когда
функция должна быть представлена в виде текстового значения, например, когда функция конкатенируется со строкой.
Если метод toString() вызывается на встроенных объектах функции или функции, созданной с использованием
метода Function.prototype.bind(), то метод toString() возвращает строку с маркером [native code]. Ниже показана возможная
форма; имя и пробелы могут отличаться.
"function () {\n [native code]\n}"
Если метод toString() вызывается для функции, созданной конструктором Function, то
возвращаемое значение будет соответствовать исходному коду синтезированного объявления функции с именем
"anonymous", используя предоставленные параметры и тело функции.
Поддержка браузерами
Спецификация: ecma262
Поддерживается во всех основных браузерах с 2015 года.
| Возможность | Компьютеры | Мобильные | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
toString | 1 | 12 | 1 | 3 | 1 | 18 | 4 | 10.1 | 1 | 1.0 | 4.4 | 1 |
| Implements Function.prototype.toString revision | 66 | 79 | 54 | 53 | 17 | 66 | 54 | 47 | 17 | 9.0 | 66 | 17 |
поддерживаетсяс ограниченияминет поддержкинет данных≤31 — не позднее версии 31
JavaScript синтаксис:
func.toString()
Спецификация
ECMAScript — Function.prototype.toString().
Исключения
| Тип исключения | Описание |
|---|---|
TypeError |
Возникает в том случае, если его значение this не является объектом Function. |
Примеры возвращаемых строк
| Функция | Результат вызова метода toString() |
|---|---|
function f(){} |
"function f(){}" |
class F { f(){} } |
"class F { f(){} }" |
function* z(){} |
"function* z(){}" |
z => z |
"z => z" |
({ f(){} }.f) |
"f(){}" |
({ *f(){} }.f) |
"*f(){}" |
({ [0](){} }[0]) |
"[0](){}" |
Object.getOwnPropertyDescriptor({ get z(){} }, "z").get |
"get z(){}" |
Object.getOwnPropertyDescriptor({ set a(x){} }, "a").set |
"set a(x){}" |
Function.prototype.toString |
"function toString() { [native code] }" |
(function f(){}.bind(0)) |
"function () { [native code] }" |
Function( "a", "b" ) |
"function anonymous(a\n) {\nb\n}" |
Примеры, попробуйте сами
Какой исходный код возвращает toString()
Измените комментарий в функции и сравните её строку со строкой связанной функции.
index.html
<p>Результат выполнения выводится в консоль.</p>
main.js
function sum(a, b) {
// Этот комментарий сохраняется в исходнике.
return a + b
}
console.log(sum.toString())
console.log(sum.bind(null).toString())
console.log(Math.max.toString())