本地vars javascript模块模式

Local vars javascript module pattern

本文关键字:模式 模块 javascript vars 本地      更新时间:2023-09-26

如何引用私有函数中的局部变量?例如,在下一个代码中,在函数myDisplay中,我如何获得show函数对象的对象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);

作用域背后的全部思想是你不能。CCD_ 1对于存储在CCD_ 2中的函数是私有的。

此外,在这个特定的例子中,myObj甚至不存在,除非对show()的调用实际上正在进行中。考虑一下这一点。它甚至在myDisplay()调用期间都不存在。(对show()的两个不同调用将分别具有不同的myObj实例。)

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

    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);

我建议您使用这样的模块模式。而且,因为javascript关闭了。您无法随心所欲地读取myObj。我为您提供了一个解决方案,希望您喜欢!