gpt4 book ai didi

javascript - 理解函数的原型(prototype)属性

转载 作者:数据小太阳 更新时间:2023-10-29 05:01:06 24 4
gpt4 key购买 nike

举个例子如果

var Func = function(){}

这里的 Func 有一个名为 prototype 的属性,我可以像下面这样添加我的自定义方法。

Func.prototype.move = function(){ //do something }

根据我的理解,原型(prototype)只是 Func 的另一个属性,它默认由解释器提供,不用于委托(delegate)任何功能,即。没有什么比

Func.move()

应用相同的逻辑,我正在创建相同功能的另一个属性,如下所示

Func.method = function(){ //do something }

现在如果创建一个新对象

var obj = new Func();

这里有 obj.move()obj.method() 不会在那里。如果原型(prototype)只是另一个没有神奇优势的属性,那么为什么会有这种特定行为??提前致谢!

最佳答案

当您使用 new 时,函数的 prototype 属性将用作内部 [[Prototype]] 属性的模板实例对象。这在某些浏览器中显示为 __proto__,不要与 prototype 混淆,后者只是一个常规属性。

prototype 不同,当您直接将属性附加到函数时,您基本上是将函数用作命名空间。由于函数是对象,它们可以具有任意属性,而其他属性是内置的,例如 prototypename。实际上,您正在创建类似于静态方法的东西,它不依赖于实例,不使用 this

关于javascript - 理解函数的原型(prototype)属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31277243/

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