gpt4 book ai didi

javascript - 构造函数模式中的自执行函数

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

我最近遇到了以下模式:

/* PATTERN 1 */
(function(window) {
var Stuff = (function() { // Variable assignment and self-invoking anonymous function
function Stuff(params) {
this.items = [];
}
Stuff.prototype = {
someMethod1: function() {

},
someMethod2: function() {

}
};
return Stuff;
}()); // END Variable assignment

Stuff.create = function(params) {
return new Stuff(params);
};

window.Stuff = Stuff;
}(window));

让我感到困惑的是分配 Stuff 变量所扮演的 Angular 色。具体而言,此模式在操作上与以下模式有何不同:

/* PATTERN 2 */
(function(window) {
// No variable assignment or self-invoking anonymous function
function Stuff(params) {
this.items = [];
}
Stuff.prototype = {
someMethod1: function() {

},
someMethod2: function() {

}
};

Stuff.create = function(params) {
return new Stuff(params);
};

window.Stuff = Stuff;
}(window));

模式 1 的原型(prototype)方法的范围是否以某种方式私有(private)而模式 2 的原型(prototype)方法不是?这纯粹是一种更清晰地分离业务逻辑的风格方法吗?

最佳答案

完全没有区别。内层IIFE is totally pointless ,因为它没有任何局部变量,可以安全地省略。唯一的(小)区别是外层 IIFE 中的 Stuff 现在是 function declaration, not a function assigned to a variable。 .

当然,就目前而言,外部 IEFE 也没什么用,除了可能用于代码组织。

关于javascript - 构造函数模式中的自执行函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25320253/

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