为什么JavaScript不允许在函数上分配属性“名称”?

问题描述:

低于Firefox和Chrome的控制台发生了什么见:为什么JavaScript不允许在函数上分配属性“名称”?

> var f = function() {} 
undefined 
> f.name = 'f' 
"f" 
> f.name 
"" 
> f.id = 1 
1 
> f.id 
1 

为什么f.name = 'f'是一个空操作?

+1

在IE9中正常工作。 – 2012-07-14 18:52:49

可能取决于实施。

在某些实现中,函数对象的name属性用作函数的名称(如果它有一个)。在这些情况下,这可能是只读的。

这是一个非标准功能。

例如:

var foo = function bar() {}; 

alert(foo.name); // will give "bar" in some cases. 

在Firefox和Chrome,如果我尝试修改它,它不会改变......

var foo = function bar() {}; 

foo.name = "baz"; 
alert(foo.name); // still "bar" in Firefox and Chrome 

这里有一些关键点从文档...

非标准

“的名称属性返回一个函数的名称,或空字符串为匿名函数“

”您不能更改函数的名称,此属性为只读“