JavaScript свойство Function.name
JavaScript FunctionОпределение и применение
JavaScript свойство name объекта Function соответствует имени функции, указанному при ее создании, или "anonymous" для функций, созданных анонимно. Свойство name доступно только для чтения.
Атрибуты свойства:
Атрибут | Значение |
---|---|
writable | false |
enumerable | false |
configurable | true* |
* - в нестандартных реализациях (до ECMAScript 2015) атрибут configurable имел значение false.
Подробную информацию о дескрипторах свойств вы можете получить в описании метода defineProperty(), который позволяет определить новое или изменить существующее свойство объекта, описывая его дескрипторами.
Поддержка браузерами
Свойство | Chrome | Firefox | Opera | Safari | IExplorer | Edge |
---|---|---|---|---|---|---|
name | Да | Да | Да | Да | Да | Да |
JavaScript синтаксис:
function.name
Версия JavaScript
ECMAScript 2015 (6th Edition, ECMA-262)Пример использования
let f = function myFunc(){} let obj = { myMethod: function myFunc(){} } f.name // возращаемое значение "myFunc" obj.myMethod.name // возращаемое значение "myFunc" (new Function).name; // возращаемое значение "anonymous" Function().name // возращаемое значение "anonymous"
Функции на которых вызывается метод bind() возвращают значение имени функции "bound " + имя функции :
let f = function myFunc(){} f.bind().name // возращаемое значение "bound myFunc"
При использовании свойств метода доступа get и set у объекта при получении имен этих функций через объект дескриптор (с использованием метода getOwnPropertyDescriptor()) к имени этих функций будет добавлено значение "get" или "set":
let obj = { get: function myFunc(){} set: function myFunc( a ){} } // возвращаем объект дескриптор для указанного собственного (неунаследованного) свойства заданного объекта let descriptor = Object.getOwnPropertyDescriptor( obj, "myFunc" ); descriptor.get.name; // возращаемое значение "get myFunc" descriptor.set.name; // возращаемое значение "set myFunc"
Если символ используетcя в качестве имени функции и имеет описание, которые было задано при создании, то имя функции будет соответствовать этому описанию, помещенному в квадратные скобки, иначе будет возвращена пустая строка:
// инициализируем переменные, содержащие символ let sym1 = Symbol( "first" ), sym2 = Symbol( "second" ), sym3 = Symbol(); let o = { [sym1]: function(){}, [sym2]: function(){}, [sym3]: function(){} }; o[sym1].name; // возращаемое значение "[first]" o[sym2].name; // возращаемое значение "[second]" o[sym3].name; // возращаемое значение ""JavaScript Function