javascript - 为什么 JavaScript 不允许在函数上分配属性 "name"?

标签 javascript properties

有关 Firefox 和 Chrome 控制台中发生的情况,请参见下文:

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

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

最佳答案

可能取决于实现。

在某些实现中,函数对象的 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

以下是文档中的一些要点...

"Non-standard"

"The name property returns the name of a function, or an empty string for anonymous functions"

"You cannot change the name of a function, this property is read-only"

关于javascript - 为什么 JavaScript 不允许在函数上分配属性 "name"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11486459/

相关文章:

python - 如何使类属性不可变?

javascript - React Native Picker 移回第一项

javascript - 通过 Angular View 调用 jQuery 函数

javascript - 通过 React 中的输入元素更新对象中的嵌套状态

c# - 如何在 ASP.NET 中的另一个页面上分配页面属性

c++ - 我可以使用 Insert Snippet 在 Visual C++ 中创建 Setter 和 Getter

python - 什么是惰性属性(property)?

javascript - HTML JavaScript - 带有额外/可选字段的表单问题

javascript - Globalize.js - 如何解析日期和时间而不仅仅是日期

c# - 用户定义的属性是延迟加载还是急切加载