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

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