我目前正在使用一些应该可以全局访问的通用方法来公开全局对象,但是我想将其原型方法定义封装在IIFE中,主要是为了能够使用库别名。
为此,我目前在IIFE范围之外声明了全局对象,并在范围内用该对象的新实例覆盖。
这样一来,以后就不可能创建新实例了,我不在乎。并有效地使全局对象可全局访问:
function CustomNamespace(){};
+function ($) {
CustomNamespace.prototype = {
constructor: CustomNamespace,
func1: function (args) {
// ...
},
func2: function (args) {
// ...
},
// ...
};
CustomNamespace = new CustomNamespace();
}(window.jQuery || {});
// ...
CustomNamespace.func1();
问题:这被认为是不良做法还是反模式?还是还有其他“优雅”的方式呢?
PS:我意识到这可能是一个琐碎的问题,但是对于此特定案例尚未找到任何答案。
最佳答案
这不适合您吗?
var CustomNamespace = function ($) {
function MyClass(){};
MyClass.prototype = {
constructor: MyClass,
func1: function (args) {
// ...
},
func2: function (args) {
// ...
},
// ...
};
return new MyClass();
}(window.jQuery || {});
// ...
CustomNamespace.func1();