Javascript 模块模式导入

标签 javascript design-patterns

我试图理解Javascript模块模式,但我无法弄清楚添加到匿名函数的参数和最后添加的参数之间的区别。那么有人可以帮助我理解两者之间的区别吗?谢谢

下面是一个模块模式示例,它实现了匿名。函数参数(JQ、Yahoo)和模块参数显示在最后(JQuery、Yahoo)。

var modularpattern = (function(JQ, Yahoo) {
    var sum = 0 ;

    return {
        add:function() {
            sum = sum + 1;
            return sum;
        },
        reset:function() {
            return sum = 0;    
        }  
    }   
}(JQuery, Yahoo));

最佳答案

从逻辑上讲,您的代码等于:

var func = function(JQ, Yahoo) { // Section 1
    var sum = 0 ;

    return {
        add:function() {
            sum = sum + 1;
            return sum;
        },
        reset:function() {
            return sum = 0;    
        }  
    }   
}

var modularpattern = func(JQuery, Yahoo);  // Section 2

所以在第 1 部分

  • JQ:用作输入参数的函数局部变量
  • 雅虎:与 JQ 完全相同

在第 2 部分(在本部分中,您实际上调用了该函数)

  • JQuery:全局范围内的现有对象
  • Yahoo:与 JQuery 完全相同

为什么开发者要这样实现:

所有全局对象都可以在函数作用域内访问,但访问局部变量比全局变量快得多。 (这称为本地化)

关于Javascript 模块模式导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25591815/

相关文章:

android - 使用更困惑的代码设计应用程序?

Javascript 模块模式帮助

javascript - 在 JavaScript 中循环访问对象

javascript - VueJS 在一个文件中两个相同的组件,其中一个的数据更改会更改另一个的数据?

wpf - WPF 的 MVVM 的漂亮而简单的定义

design-patterns - Redis中持久队列的 worker 管理

javascript - 加载和执行脚本的顺序

javascript - Angular 4 - 如何让管道触发编程值更改(无键盘事件)

javascript - Node.js 和 Mongoose,无法恢复 _i​​d

java - 重构以公开用于单元测试的私有(private)方法