gpt4 book ai didi

javascript - 使用这种 javascript 模式的性能缺点?

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

我试图在 javascript 中复制私有(private)原型(prototype)方法并找到了这段代码,但我不完全理解它是如何实现的。

代码是...

var Foo = function () {};  

Foo.prototype = (function () {

// Private attributes
var somePrivateAttribute = 'Hello world';

// Private methods
function somePrivateMethod(val) {
alert(val);
}

// Public attributes and methods
return {
somePublicMethod: function () {
somePrivateMethod(somePrivateAttribute);
}
};
})();

我不明白的是,当这个对象被启动时 new Foo() 是否每次都为原型(prototype)创建一个新对象,因为它是在一个自执行函数中?谁能解释一下将它用于我的项目的优点和缺点。

这种类型的模式如何适用于可能有 500 个实例或只有 1 个实例的对象。我正在尝试理解,如果有人能启发我,我将不胜感激?

使用此方法是否有任何性能优势?

最佳答案

What I do not understand is when this object is initiated new Foo() does that create a new object for the prototype every time as it is in a self executing function?

没有。这就是原型(prototype)的意义所在,它们不会重复 - 您的每个 Foo 实例都将继承自同一个 Foo.prototype 对象。

Could anyone please explain the benefits and disadvantages of using this for a project of mine.

看起来你对命名有点误解:那些“私有(private)”的东西不是“属性”或“方法”,因为它们与实例对象完全无关。它们只是局部变量,只能从您分配给原型(prototype)对象的函数中访问。

您可能想阅读 How do JavaScript closures work?及其在 IIFEs 中的使用.

How would this type of pattern work for objects that could have 500 instances or just 1.

完全没问题。但是,仅对 1 个实例使用构造函数模式可能有点奇怪 - 单例可以用更简单的方式定义。

如果您想阅读有关该模式的更多信息,请搜索 revealing prototype pattern - 这是 revealing module pattern应用于创建原型(prototype)对象。

关于javascript - 使用这种 javascript 模式的性能缺点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16005447/

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