我有一些 Javascript 代码分布在多个文件中,但我想通过 IFFE 来促进缩小。有些方法必须保持公开。
Wikipedia建议访问器的实现:
var counter = (function(){
var i = 0;
return {
get: function(){
return i;
},
set: function( val ){
i = val;
},
increment: function() {
return ++i;
}
};
}());
不幸的是,当在多个文件中声明此类函数时,从 return
声明这些函数并不容易。
以下是正确的解决方案吗?如果不是,那是什么?
var counter = (function(){
var i = 0;
// Import js file 1...
this.get = function(){ return i; };
// Import js file 2...
this.set = function( val ){ i = val; };
// Import js file 3...
this.increment = function() { return ++i; };
return this;
}());
P.S.:我希望能够执行以下调用:
counter.get();
counter.set(33);
counter.increment();
最佳答案
您感兴趣的模式似乎是这样的:
//file 1
var xy = (function (that) {
that.prop1 = 1;
return that;
}(xy || {}));
//file2
var xy = (function (that) {
that.prop2 = 2;
return that;
}(xy || {}));
这将产生一个具有两个属性的全局对象xy
:
xy = {
prop1: 1,
prop2: 2
};
关于javascript - 在多个文件中声明时,使函数在 Javascript IFFE 中公开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18087758/