gpt4 book ai didi

Javascript 模块模式 - 差异

转载 作者:行者123 更新时间:2023-12-03 02:56:09 28 4
gpt4 key购买 nike

我了解 javascript 模块模式,但我使用两种类型的模块模式,并且想从架构 Angular 了解它们之间的区别。

// PATTERN ONE
var module = (function() {
var _privateVariable = '';

var _privateMethod = function() {
var _this = this;
// private method def
// can use _this._privateVariable
console.log('Inside a private method!');
};

var publicMethod = function() {
var _this = this;
// public method def
// can use _this._privateVariable
// can call _privateMethod();
};

return {
publicMethod: publicMethod
};
})();

// PATTERN TWO
var module = (function() {
var wrapper = {
_privateVariable: '',

_privateMethod: function() {
var _this = this;
// private method def
// can use _this._privateVariable
console.log('Inside a private method!');
},

publicMethod: function() {
var _this = this;
// public method def
// can use _this._privateVariable
// can call _privateMethod();
},
};

return {
publicMethod: wrapper.publicMethod
};
})();

这两种模式似乎对我做同样的事情

  1. 使用它们中的任何一个有显着差异吗?
  2. 应该避免其中一种模式吗?
  3. 有更好的方法来使用它们吗?

最佳答案

事实上,你提到的两种模式没有区别。我看到的唯一区别是第二个模式使用 wrapper 作为可以避免的额外变量。

考虑到其他情况,您可能希望返回一个复杂的对象而不是当前对象,那么第二种模式非常有用,

例如。

var wrapper = {
_privateVariable: '',

_privateMethod: function() {
var _this = this;
console.log('Inside a private method!');
},

publicMethod: function() {
var _this = this;
},

publicMethod2: function() {
var _this = null;
},

publicMethod3: function(default) {
var _this = default;
},
};

return {
publicMethod: wrapper
};

关于Javascript 模块模式 - 差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47609301/

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