[英]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.