gpt4 book ai didi

Javascript 对象构造 : whats the difference?

转载 作者:搜寻专家 更新时间:2023-11-01 05:02:24 26 4
gpt4 key购买 nike

除了成员变量的隐私外,这两个对象的构造有什么不同?

function A() { this.a = 99; }
A.prototype.setA = function(newVal) { this.a = newVal; }
A.prototype.getA = function({ return this.a; }

还有这个:

function A() {
var a = 99;
return {
setA: function(newVal) { a=newVal; }
getA: function() { return a; }
}
}

我对成员变量的隐私不感兴趣,我对函数的定义方式不感兴趣。

我是否认为在第二个版本中所有通过 new A() 创建的对象都将获得已定义函数的副本,而在第一个版本中,所有对已定义函数的调用都将转到唯一的原型(prototype)对象(对于 A 对象)。这是正确的吗?

如果是这样,版本 2 是否有任何性能成本?

此外,是否有一种方法优于另一种方法 - 还是有更好的方法?

非常感谢

最佳答案

Am I right in thinking that in the second version all objects created via new A() will get copies of the defined functions, where as in the first version all calls to the defined functions will go to the one and only prototype object (for the A object). Is this right?

If so does version 2 have any performance costs?

每个对象 A 使用 setA 和 getA 更多内存

Also, Is one way preferred over another - or is there a better way again?

既然不关心封装,就用prototype

关于Javascript 对象构造 : whats the difference?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7488864/

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