gpt4 book ai didi

javascript - 使用 new 运算符初始化单例 javascript 对象?

转载 作者:行者123 更新时间:2023-11-30 09:08:51 24 4
gpt4 key购买 nike

在javascript中,有什么区别:

var singleton = function(){ ... }

var singleton = new function(){ ... }

?

如 crockford ( http://www.crockford.com/javascript/private.html ) 所述声明特权函数仅适用于后者。

最佳答案

不同之处主要在于,在您的第二个示例中,您将函数表达式用作 Constructornew 运算符将导致函数自动执行,并且该函数内的 this 值将引用新创建的对象。

如果你没有从该函数返回任何东西(或者你没有返回非原始值),this 值将被返回并分配给你的singleton 变量。

特权方法也可以用在你的第二个例子中,一个常见的模式是使用 immediately invoked function expression , 创建一个 closure在可访问私有(private)成员的地方,您可以返回一个包含您的公共(public)API的对象,例如:

var singleton = (function () {
var privateVar = 1;

function privateMethod () {/*...*/}

return { // public API
publicMethod: function () {
// private members are available here
}
};
})();

关于javascript - 使用 new 运算符初始化单例 javascript 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2249618/

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