Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.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
如何从另一个模块JS对象中的JavaScript对象访问函数和变量?_Javascript - Fatal编程技术网

如何从另一个模块JS对象中的JavaScript对象访问函数和变量?

如何从另一个模块JS对象中的JavaScript对象访问函数和变量?,javascript,Javascript,我正在构建一个在后端使用JavaScript和PHP的应用程序。它将允许用户构建插件/模块来扩展应用程序 基于JavaScript结构,如下面的对象var WebDevApp={} 我怎样才能使其他模块(包括kude there)在页面中拥有JavaScript文件,能够访问我下面的核心代码中的there对象,并允许他们在那里的代码中访问该对象 例如,如果加载了一个名为Bookmarks的模块,那么它将有一个类似这样的JS对象 var WebDevApp.Bookmarks = { }

我正在构建一个在后端使用JavaScript和PHP的应用程序。它将允许用户构建插件/模块来扩展应用程序

基于JavaScript结构,如下面的对象
var WebDevApp={}

我怎样才能使其他模块(包括kude there)在页面中拥有JavaScript文件,能够访问我下面的核心代码中的there对象,并允许他们在那里的代码中访问该对象

例如,如果加载了一个名为
Bookmarks
的模块,那么它将有一个类似这样的JS对象

var WebDevApp.Bookmarks = {

}  
WebDevApp.Bookmarks.getJsonData();
在我下面的核心代码中,我可以像这样从上面调用函数

var WebDevApp.Bookmarks = {

}  
WebDevApp.Bookmarks.getJsonData();
在模块JS代码中,我应该能够从核心代码中调用如下内容

WebDevApp.cache.varFromCoreJsObjectCalledFromModule

我希望模块扩展的核心JS对象代码…

var WebDevApp = {

    modulesJson: '',

    cache: {
        templates: {},
    },

    init: function() {

    },

    events: function() {

        // all the dom devents from other JS files ................
        WebDevApp.Bookmarks.domEvents();

        WebDevApp.OtherModuleName.domEvents();
    },


    loadJSONData: function() {
        // load JSON Data from the other Module JS files
        WebDevApp.Bookmarks.loadJSONData();

        WebDevApp.OtherModuleName.loadJSONData();
    },
}


// run app
jQuery(document).ready(function($) {
    WebDevApp.init();
});

我认为您可能需要确保您的核心模块没有与其他模块紧密耦合。您可以通过确保向core注册其他模块来实现这一点(假设存在模块数组属性):

WebDevApp.modules.push(WebDevApp.Bookmarks);
然后在events和loadJSONData函数中,您将拥有如下逻辑:

WebDevApp.modules.forEach(函数(mod)){
mod.domEvents();
});

我认为您可能需要确保您的核心模块没有与其他模块紧密耦合。您可以通过确保向core注册其他模块来实现这一点(假设存在模块数组属性):

WebDevApp.modules.push(WebDevApp.Bookmarks);
然后在events和loadJSONData函数中,您将拥有如下逻辑:

WebDevApp.modules.forEach(函数(mod)){
mod.domEvents();
});

对不起,你的问题是什么?你想做什么你做不到的事?对不起,你的问题是什么?你想做什么你做不到的事?