本地vars javascript模块模式

时间:2015-06-23 03:15:28

标签: javascript design-patterns module

如何在私有函数中引用局部变量?例如,在下一个代码中,在函数myDisplay中,如何获取show function object的对象myObject并获取id =' B'?

var charge = (function($){

    var open = function(){
        var myObj = {
            id: 'A'
        };
    };

    var show = function(){
        var myObj = {
            id: 'B'
        };
        myDisplay();
    };

    function myDisplay(){
        //Here, how to refer to var myObj of show function object?
    }       
    return {
        open: open,
        show: show
    };
})(jQuery);

2 个答案:

答案 0 :(得分:0)

scoping背后的整个想法是你无法做到的。 myObj对于存储在show中的函数是私有的。

此外,在此特定示例中,myObj甚至不存在,除非对show()的调用实际上正在进行中。考虑一下这一点。它在myDisplay()电话中甚至不存在。 (对show()的两次不同调用将各自具有不同的myObj个实例。)

如果您希望外部函数和show共享数据,请将myObj移出到外部作用域 - 与ret所在的作用域相同。

答案 1 :(得分:0)

    var charge = (function($) {
        var myObjA = {
            id: 'A'
        };

    var myObjB = {
                id: 'B'
            }

        var open = function() {

        };

        var show = function() {

            myDisplay();
        };

        function myDisplay() {
            console.log(myObj);
            //Here, how to refer to var myObj of show function object?
        };

        return {
            open: open,
            show: show
        };
    })(jQuery);

我建议你使用那样的模块模式。 并且,因为javascripts关闭。 您无法按需读取myObj。 我为你提供了一个希望你喜欢它的解决方案!