繁体   English   中英

覆盖命名函数的name属性

[英]Overriding name property of named functions

我有一个命名函数,如下所示:

var foo = function ninjaFunc(){

};

在控制台中检查其名称,我发现“ ninjaFunc”是预期的:

console.log(foo.name); //-> "ninjaFunc"

我只是将foo.name重新分配给'aha' 它运行没有任何错误。

foo.name = 'aha'; //compiles without error

但是重新检查foo.name ,我再次找到了“ ninjaFunc”。 但是我希望它是“啊哈”,因为编译器在辅助它时不会引发错误。

console.log(foo.name); //-> "ninjaFunc"

为什么这样 ? 我缺少哪个概念?

ECMAScript的标准参考是ECMA-262,即语言规范。 当前的标准ES5没有为函数实例指定name属性。

但是,第6版的草案在§19.2.4.2中做了规定

此属性具有属性{[[[Writable]]:false,[[Enumerable]]:false,[[Configurable]]:true}。

这表明您无法根据§6.1.7.1对其进行写入(writeable:false)。

实现可能已经实现了ed。 6行为,还是没有。 您将需要测试各种浏览器以确定支持(例如,IE 6和更高版本可能不支持)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM