javascript - 在多个文件中声明时,使函数在 Javascript IFFE 中公开

标签 javascript minify accessor iife

我有一些 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/

相关文章:

javascript - ecmascript 5 或 6 中未定义键和空键的行为

javascript - 在 Rails 3 应用程序中使用 jQuery 刷新 div 元素

Javascript一次请求多个JS文件

c++ - 通过引用访问 const 的语法

css - 添加到 WordPress 头部时缩小输出中的 CSS

javascript - AngularJS : Scope inaccessible in directive after minification

java - 有没有办法制作一个可以在 Java 中使用 [] 的自定义类,类似于数组?

javascript - object.assign 正在用重复信息覆盖数组中的所有对象

javascript - 使用 MVC 4 从 View 传递模型数据但不显示在操作中

javascript - <select> 要求不工作