Метод toString() повертає рядкове представлення першокоду функції.
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
Синтаксис
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).