Function.name

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

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

 Внесли вклад в эту страницу: Mingun, teoli, Lord_Howe
 Обновлялась последний раз: Mingun,