JavaScript метод Function.prototype.toString()

Определение и применение

JavaScript метод Function.prototype.toString() возвращает строку, представляющую исходный код функции.

Для пользовательских функций метод toString() возвращает строку, содержащую сегмент исходного текста, который использовался для определения функции. JavaScript вызывает метод toString() автоматически, когда функция должна быть представлена в виде текстового значения, например, когда функция конкатенируется со строкой.

Если метод toString() вызывается на встроенных объектах функции или функции, созданной с использованием метода Function.prototype.bind(), то метод toString() возвращает строку с маркером [native code]. Ниже показана возможная форма; имя и пробелы могут отличаться.

JavaScript
"function () {\n    [native code]\n}"

Если метод toString() вызывается для функции, созданной конструктором Function, то возвращаемое значение будет соответствовать исходному коду синтезированного объявления функции с именем "anonymous", используя предоставленные параметры и тело функции.

Поддержка браузерами

Спецификация: ecma262

Поддерживается во всех основных браузерах с 2015 года.

Показать браузеры
Совместимостьjavascript.builtins.Function.toString
ВозможностьКомпьютерыМобильные
ChromeEdgeFirefoxOperaSafariChrome AndroidFirefox for AndroidOpera AndroidSafari on iOSSamsung BrowserWebView AndroidWebView on iOS
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 синтаксис:

JavaScript
func.toString()

Спецификация

ECMAScript — Function.prototype.toString().

Исключения

tostring: справочные сведения
Тип исключения Описание
TypeError Возникает в том случае, если его значение this не является объектом Function.

Примеры возвращаемых строк

Результаты toString() для разных видов функций
Функция Результат вызова метода 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
HTML
<p>Результат выполнения выводится в консоль.</p>
main.js
JavaScript
function sum(a, b) {
    // Этот комментарий сохраняется в исходнике.
    return a + b
}
console.log(sum.toString())
console.log(sum.bind(null).toString())
console.log(Math.max.toString())