JavaScript свойство Function.nameECMAScript 2015

JavaScript Function

Определение и применение

JavaScript свойство nameECMAScript 2015 объекта Function соответствует имени функции, указанному при ее создании, или "anonymous" для функций, созданных анонимно. Свойство nameECMAScript 2015 доступно только для чтения.

Атрибуты свойства:

АтрибутЗначение
writablefalse
enumerablefalse
configurabletrue*

* - в нестандартных реализациях (до ECMAScript 2015) атрибут configurable имел значение false.

Подробную информацию о дескрипторах свойств вы можете получить в описании метода defineProperty(), который позволяет определить новое или изменить существующее свойство объекта, описывая его дескрипторами.

Поддержка браузерами

СвойствоChrome
Chrome
Firefox
Firefox
Opera
Opera
Safari
Safari
Internet Explorer
IExplorer
Microsoft Edge
Edge
nameECMAScript 2015ДаДаДаДаДаДа

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