Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从命名空间外部更新内部配置?_Javascript_Namespaces_Private Methods - Fatal编程技术网

Javascript 如何从命名空间外部更新内部配置?

Javascript 如何从命名空间外部更新内部配置?,javascript,namespaces,private-methods,Javascript,Namespaces,Private Methods,我有一个javascript文件,如下所示 (function (rpc) { rpc.loadHomeBanner = rpc_loadHomeBanner; function rpc_loadHomeBanner(){ // AN is used by Sencha Animator as an Animation variable rpc.AN ={}; rpc.AN.Controller = {

我有一个javascript文件,如下所示

(function (rpc) {

    rpc.loadHomeBanner = rpc_loadHomeBanner;
    function rpc_loadHomeBanner(){

        // AN is used by Sencha Animator as an Animation variable
        rpc.AN ={};

        rpc.AN.Controller = {

            setConfig: function(configData) {
                // update config crap
            }
        };

        var configData = {
           // config crap
        };

        rpc.AN.Controller.setConfig(configData);
    }
})(rpc);
现在,在第一次加载页面时,我调用

rpc.loadHomeBanner(); 
当我需要它时,它就会燃烧起来

问题是我有一个
handleOrientionChange
方法需要从名称空间之外更新配置(由于开销,我不想触发loadHomeBanner方法)


如何从闭包范围之外调用
rpc.AN.controller.setConfig

它应该已经可以访问,因为您已经将
rpc
对象传递到该代码模块中。

您应该创建一个
工厂

var createRPC = function( rpc ) {
    rpc.AN = {
        Controller: {
            setConfig: function( configData ) {
            }
        }
    };

    return {
        updateConfig: function( configData ) {
            rpc.AN.Controller.setConfig( configData );
        };
    };
};
然后像这样使用它

var rpc = createRPC({});

//handle orientation change
rpc.updateConfig({
    some: 'data'
});

您正在从外部传递
rpc
,因此您应该能够从
rpc
可见的任何位置调用
rpc.AN.controller.setConfig
。实际上,我看不出闭包有什么好处。@FelixKling:我希望这不是该模块中的全部代码,Chase只是展示了必要的东西?hrm。。。我觉得有点傻。我得到的错误正在
setConfig
方法中抛出。在问愚蠢的问题之前,我应该多做一些疑难解答。注意他的另一个问题:对于对象形式,他使用的是上下文。
var rpc = createRPC({});

//handle orientation change
rpc.updateConfig({
    some: 'data'
});