【问题标题】:Simple Closure example in Module Pattern not working模块模式中的简单闭包示例不起作用
【发布时间】:2016-09-01 05:28:24
【问题描述】:

在我要演示的简单示例中:

1. Module Pattern
2. Closure 

我正在尝试通过使用闭包来更改局部变量的值。但是,我无法实现它(控制台中的输出必须为 15)。

HTML

<script>
function box(){
    var a;
    a=10;

    var obj = {};
    obj.func1 = function(b){
        a = a+b;
        console.log(a);
    }
    return obj;
}

box.func1(5);
</script>

请在示例中帮助我。

另外,请告诉我,在这个简单的示例中,我是否遗漏了 Module Pattern 的任何关键组件

【问题讨论】:

    标签: javascript function design-patterns closures


    【解决方案1】:

    您没有调用box 函数。你需要在它后面加上()才能调用它。

    function box(){
        var a;
        a=10;
    
        var obj = {};
        obj.func1 = function(b){
            a = a+b;
            console.log(a);
        }
        return obj;
    }
    
    box().func1(5);

    但这并不是真正的模块模式。对于模块,您将变量设置为返回对象的IIFE 的结果。

    var Box = (function(){
        var a;
        a=10;
    
        var obj = {};
        obj.func1 = function(b){
            a = a+b;
            console.log(a);
        }
        return obj;
    })();
    
    Box.func1(5);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-20
      相关资源
      最近更新 更多