Переклад не закінчено. Будь ласка, допоможіть перекласти цю статтю з англійської.
Властивість function.name
повертає ім'я функції.
Property attributes of Function.name |
|
---|---|
Writable | no |
Enumerable | no |
Configurable | yes |
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.