Переклад не закінчено. Будь ласка, допоможіть перекласти цю статтю з англійської.

Властивість function.name повертає ім'я функції.

Property attributes of Function.name
Writable no
Enumerable no
Configurable yes
Зверність увагу, що в нестандартних, пре-ES6 реалізаціях атрибут configurable теж мав значення false.
 

Опис

Властивість name повертає ім'я функції, або (перед реалізацією ES6) порожній рядок для анонімних функцій:

function doSomething() {}

console.log(doSomething.name); // logs "doSomething"

Властивіть name повертає порожній рядок для функцій, які створюються за допомогою синтаксису new Function(...)або ж Function(...).

В наступному прикладі оголошуються анонімні функції, тому властивість name повертає пусте значення:

var f = function() {};
var object = {
  someMethod: function() {}
};

console.log(f.name == ''); // true
console.log(object.someMethod.name == ''); // also true

Браузери що підтримують функції ES6 можуть вивести ім'я анонімної функції з її синтаксичної позиції. Наприклад:

var f = function() {};
console.log(f.name); // "f"

Ви можете оголосити функцію з ім'ям в function expression:

var object = {
  someMethod: function object_someMethod() {}
};
console.log(object.someMethod.name); // logs "object_someMethod"

try { object_someMethod } catch(e) { console.log(e); }
// ReferenceError: object_someMethod is not defined

Ви не можете змінювати ім'я функції, ця властивість доступна лише для читання (read-only):

var object = {
  // anonymous
  someMethod: function() {}
};

object.someMethod.name = 'someMethod';
console.log(object.someMethod.name); // empty string, someMethod is anonymous

Однак, щоб змінити її, Ви могли б використовувати Object.defineProperty().

Приклади

Ви можете використовувати obj.constructor.name для перевірки "класу" об'єкту:

function a() {}

var b = new a();

console.log(b.constructor.name); // logs "a"

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

Специфікація Статус Примітка
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'name' in that specification.
Standard Початкове визначення.
ECMAScript Latest Draft (ECMA-262)
The definition of 'name' in that specification.
Draft  

Браузерна сумісність

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support 33.0 (Yes) No support (Yes) (Yes)
Configurable: true 43.0 38 (38) ? ? ?
Inferred names on anonymous functions 51.0 No support [1] ? ? ?
Feature Android Android Webview Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile Chrome for Android
Basic support (Yes) (Yes) (Yes) No support (Yes) (Yes) (Yes)
Configurable: true ? ? 38.0 (38) ? ? ? ?
Inferred names on anonymous functions No support 51.0 No support [1] ? ? ? 51.0

[1] See bug 883377.

Мітки документа й учасники

Зробили внесок у цю сторінку: MyrosiaPabyrivska, Kelebor
Востаннє оновлена: MyrosiaPabyrivska,