Function.prototype.toString()

Метод toString() повертає рядкове представлення першокоду функції.

Синтаксис

function.toString()

Значення, що повертається

Рядкове представлення першокоду функції.

Опис

Об'єкт Function заміщує метод toString, успадкований від Object; він не успадковує Object.prototype.toString. Для визначених користувачем об'єктів Function метод toString повертає рядок, який містить текстовий сегмент першокоду, що використовувався для визначення функції.

JavaScript викликає метод toString автоматично, коли Function потрібно відобразити у вигляді текстового значення, наприклад, при поєднанні функції з рядком.

Метод toString() викине виняток типу TypeError ("Function.prototype.toString called on incompatible object"), якщо його значення this не є об'єктом Function.

Function.prototype.toString.call('foo'); // TypeError

Якщо метод toString() викликається на вбудованих функціональних об'єктах або функціях, створених Function.prototype.bind, toString() повертає рядок нативної функції, який виглядає так:

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

Якщо метод toString() викликається на функції, створеної конструктором Function, toString() повертає першокод синтезованої декларації функції, названої "anonymous", з наданими параметрами та тілом функції.

Приклади

Функція Результат Function.prototype.toString
function f(){}
"function f(){}"
class A { a(){} }
"class A { a(){} }"
function* g(){}
"function* g(){}"
a => a
"a => a"
({ a(){} }.a)
"a(){}"
({ *a(){} }.a)
"*a(){}"
({ [0](){} }[0])
"[0](){}"
Object.getOwnPropertyDescriptor({
    get a(){}
}, "a").get
"get a(){}"
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}"

Специфікації

Специфікації Статус Коментар
ECMAScript 1st Edition (ECMA-262) Standard Початкове визначення. Реалізовано у JavaScript 1.1.
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Function.prototype.toString' in that specification.
Standard Додані ще специфічні вимоги до рядкового представлення.
Function.prototype.toString revisions proposal Чернетка Стандартизує рядок нативної функції, закінчення рядків.
ECMAScript (ECMA-262)
The definition of 'Function.prototype.toString' in that specification.
Living Standard

Сумісність з веб-переглядачами

BCD tables only load in the browser

Примітки щодо Firefox

  • Починаючи з Firefox 17, метод Function.prototype.toString() був реалізований зберіганням першокоду функції. Декомпілятор був прибраний, щоб параметр indentation більше не був потрібний. Більше інформації дивіться на сторінці bug 761723.
  • Починаюи з Firefox 38 і до 63, метод Function.prototype.toString() викидав об'єкти Proxy (bug 1100936 та bug 1440468).

Див. також