gpt4 book ai didi

javascript - 为什么Function.prototype不能修改?

转载 作者:行者123 更新时间:2023-11-28 06:28:33 24 4
gpt4 key购买 nike

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();

那么myInstanceAClassName类的一个对象,因此它继承自AClassName.prototype

因此,回答您问题的根源:Function.prototype 无法修改,因为它是语言的核心部分,更改它可能会带来性能或安全问题。但是,您完全可以自由地修改自己的类的原型(prototype)。

关于javascript - 为什么Function.prototype不能修改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34897762/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com