Это экспериментальная технология, часть предложения Harmony (ECMAScript 6).
Поскольку спецификация этой технологии ещё не стабилизировалась, проверьте таблицу совместимости её использования в различных браузерах. Также обратите внимание, что синтаксис и поведение экспериментальной технологии могут быть изменены в будущих версиях браузеров в соответствии с изменениями в спецификации.
Сводка
Свойство function.name возвращает имя функции.
Атрибуты свойстваFunction.name |
|
|---|---|
| Записываемое | нет |
| Перечисляемое | нет |
| Настраиваемое | да |
Описание
Свойство name возвращает имя функции, либо пустую строку для анонимных функций:
function doSomething() {}
alert(doSomething.name); // выведет "doSomething"
Функции, созданные синтаксисом new Function(...) или просто Function(...) имеют в качестве ствойства name пустую строку. В следующих примерах создаются анонимные функции, так что свойство name возвращает пустую строку:
var f = function() {};
var object = {
someMethod: function() {}
};
alert(f.name == ''); // true
alert(object.someMethod.name == ''); // также true
Вы можете определить функцию с именем с помощью выражения функции:
var object = {
someMethod: function object_someMethod() {}
};
alert(object.someMethod.name); // выведет "object_someMethod"
try { object_someMethod } catch(e) { alert(e); }
// ReferenceError: object_someMethod is not defined
Вы не можете изменить имя функции, это свойство только для чтения:
var object = {
// анонимная функция
someMethod: function() {}
};
object.someMethod.name = 'someMethod';
alert(object.someMethod.name); // пустая строка, someMethod является анонимной функцией
Примеры
Вы можете использовать obj.constructor.name для проверки «класса» объекта:
function a() {}
var b = new a();
alert(b.constructor.name); // выведет "a"
Спецификации
| Спецификация | Статус | Комментарии |
|---|---|---|
| ECMAScript 6 (ECMA-262) Определение 'name' в этой спецификации. |
Кандидат в рекомендации | Изначальное определение. |
Совместимость с браузерами
| Возможность | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|
| Базовая поддержка | (Да) | (Да) | Нет | (Да) | (Да) |
| Поддержка настраиваемости | ? | 38 (38) | ? | ? | ? |
| Возможность | Android | Chrome для Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|
| Базовая поддержка | (Да) | (Да) | (Да) | Нет | (Да) | (Да) |
| Поддержка настраиваемости | ? | ? | 38.0 (38) | ? | ? | ? |