Это экспериментальная технология, часть предложения 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) | ? | ? | ? |