Please note, this is a STATIC archive of website developer.mozilla.org from November 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

Function.name

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

Властивість 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"

Functions created with the syntax new Function(...) or just Function(...) have their name property set to an empty string. In the following examples anonymous functions are created, so name returns an empty string:

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 2017 Draft (ECMA-262)
The definition of 'name' in that specification.
Draft  

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

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.

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

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