gpt4 book ai didi

javascript - MyObj.prototype。对比这个

转载 作者:行者123 更新时间:2023-11-29 10:21:31 25 4
gpt4 key购买 nike

这里是 JS 新手,所以希望这不是一个愚蠢的问题。

在使用方法定义自定义对象时,以下两种方法的区别和优缺点是什么?

1 : 使用this 在类定义中定义方法。

function MyObj(){    
this.doStuff = function(){
//method body
}
}

2 : 使用prototype单独定义方法。

function MyObj(){    
}

MyObj.prototype.doStuff = function()
{
//method body
}

我现在正在弄乱它,两者似乎都一样,所以我想我会在我走上一条稍后会回来并咬我屁股的轨道之前找到不同之处:)

大家好

最佳答案

当您使用 this 时,您的“类”的每个实例都将拥有自己的方法副本。

当您使用原型(prototype)时,所有实例都将共享该方法的一个副本。因此,在 prototype 上声明方法会更有效,因为每个实例需要的内存更少。

例如,创建MyObj的两个实例:

var o1 = new MyObj(),
o2 = new MyObj();

如果在构造函数中声明了 doStuff 方法,那么每个实例现在在内存中都有该方法的副本。如果它是在 prototype 上声明的,它们将共享该副本。当您尝试调用它时:

o1.doStuff();

实例本身没有doStuff属性,所以我们向上移动原型(prototype)链,到MyObj.prototype,那里有一个doStuff 方法。

关于javascript - MyObj.prototype。对比这个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10934588/

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