javascript - 两种代码的区别——模块

标签 javascript module

这两种代码有什么区别? 为什么第一个比第二个更有利?

let mod1 = (function () {
    return {
      isCuteMixin: function(obj) {
        obj.isCute = _ => true;
      },
      singMixin: function(obj){ 
        obj.sing = _ => {console.log("Singing to an awesome tune");}
        }
    }
  })();

  let mod2 = {
    isCuteMixin: function(obj) {
        obj.isCute = _ => true;
      },
      singMixin: function(obj){ 
        obj.sing = _ => {console.log("Singing to an awesome tune");}
        }
    };

最佳答案

第一个是立即调用函数,返回一个对象,第二个是一个对象。

函数可以具有可由其内部所有函数访问的变量,并且这些变量不能从函数外部访问。因此,您可以保留与第一个版本的模块相关的私有(private)变量。

<小时/>

也就是说,现在我会选择 ES 模块:

   const privateVariable = "whatever";

   export function someMethod() { /*...*/ }

关于javascript - 两种代码的区别——模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57451111/

相关文章:

javascript - 函数/类作为 Angular 服务

javascript - 理解 Redux 和状态

php - 向 SuiteCRM 添加新模块

Apache mod 规避导致 index.php 权限被拒绝

C - 从内核模块写入物理内存

python - 从 PIL 导入图像 - ImportError : No module named PIL

javascript - 用于文件上传的 Firebase 云功能

javascript - Handlebars 中的条件部分

javascript - basemap 选择器不起作用

Python 2to3 不更改文件