以下Javascript代码没有预期效果:
Function.prototype = {test:“foo”}
Function.prototype显然没有被赋值改变(至少在firefox上)。为什么是这样?有没有办法覆盖它?
答案 0 :(得分:6)
来自the spec:
15.3.3.1 Function.prototype
Function.prototype
的初始值是标准的内置函数原型对象(15.3.4)。此属性具有{[[Writable]]:false,[[Enumerable]]:false,[[Configurable]]:false}。
关于[[Writable]]的部分:
如果
false
,ECMAScript代码尝试使用[[Put]]更改属性的[[Value]]属性将不会成功。