0

我有一些 Javascript 代码分布在多个文件中,但我想通过 IFFE 促进缩小。有些方法必须保持公开。

维基百科建议访问器的实现:

var counter = (function(){
  var i = 0;

  return {
    get: function(){
      return i;
    },
    set: function( val ){
      i = val;
    },
    increment: function() {
      return ++i;
    }
  };
}());

不幸的是,return当在多个文件中声明此类函数时,声明这些 from 并不容易。

以下是正确的解决方案吗?如果不是,那是什么?

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;

}());

PS:我希望能够执行以下调用:

counter.get();
counter.set(33);
counter.increment();
4

1 回答 1

4

您感兴趣的模式似乎是这样的:

//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
};
于 2013-08-06T19:29:57.887 回答