在 Function.prototype页面是这样写的:
Function objects inherit from Function.prototype. Function.prototype cannot be modified.
或者在 javascript 中,除了继承和原型(prototype)链之外没有类,其中构造函数实际上是函数:
function AclassName(){
return 2;
}
// AclassName ---> Function.prototype ---> Object.prototype ---> null
而且我认为总是可以扩展类原型(prototype),例如:
AclassName.prototype.color = "somevlue";
那么 i 无法被修改是什么意思?
最佳答案
JS 中的所有内容都有原型(prototype)(即使它为 null)。因此,实际函数
的原型(prototype)是Function.prototype
。
当您在示例中分配或修改 AclassName.prototype
时,您正在为 AclassName
的实例设置原型(prototype)。请注意,对象x
的原型(prototype)与 x.prototype
不同。如果 x 用作构造函数,则 .prototype
用于设置将用于 x 的实例的原型(prototype)。
换句话说:
用 function AClassName () {}
声明的函数 AClassName 是 Function 类的对象,因此它继承自 Function.prototype
.
如果您实例化该类:
var myInstance = new AClassName();
那么myInstance
是AClassName类的一个对象,因此它继承自AClassName.prototype
。
因此,回答您问题的根源:Function.prototype
无法修改,因为它是语言的核心部分,更改它可能会带来性能或安全问题。但是,您完全可以自由地修改自己的类的原型(prototype)。
关于javascript - 为什么Function.prototype不能修改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34897762/