帮助设计公开我初始化的属性的javascript类

帮助设计公开我初始化的属性的javascript类,javascript,jquery,module-pattern,Javascript,Jquery,Module Pattern,我想像这样初始化我的javascript类: Example.settings.baseUrl Example.user.id; Example.user.name; Example = (function(){ var _init = function(data) { }; return { init: function($data) { _init($data); }

我想像这样初始化我的javascript类:

Example.settings.baseUrl
Example.user.id;
Example.user.name;
Example = (function(){

       var _init = function(data) {

       };

       return {
           init: function($data) {
              _init($data);
           }
       };
})();
init({“设置”:{“baseUrl”:“}, “用户”:{“id”:123,“姓名”:“john doe”})

然后我希望能够像这样使用它:

Example.settings.baseUrl
Example.user.id;
Example.user.name;
Example = (function(){

       var _init = function(data) {

       };

       return {
           init: function($data) {
              _init($data);
           }
       };
})();
我目前使用的模块模式如下:

Example.settings.baseUrl
Example.user.id;
Example.user.name;
Example = (function(){

       var _init = function(data) {

       };

       return {
           init: function($data) {
              _init($data);
           }
       };
})();
Example.module2=(函数(){

我不确定如何公开这些属性,寻找解释和指导

(还请评论最佳实践,我是否应该使用$作为参数,如果是,何时使用?)

注:以下是我试图做的基本概述

  • 我要做的第一件事是在我的所有页面中调用Example.init函数:

    init({“设置”:{“baseUrl”:“}”,用户:{“id”:123,“名称”:“johndoe”})

  • 我希望我的其他模块能够引用我在.init()方法中设置的这个数据,请参见上面添加的Example.module2

  • 这有时间问题吗?

    Example = (function(){
    
        var _init = function(data){
            // manually 
            //this.settings = data.settings || NULL;
            //this.user = data.user || NULL ;
            for (prop in data){
                this[prop] = data[prop];
            }
        }
    
        return {
               init: function(data) {
                   _init.call(this, data); 
               }
           };
    })();
    Example.init(
        {"settings": {"baseUrl":"http://example.com"}, "user": {"id":123, "name":"john doe"}});
    
    console.log(Example.settings.baseUrl); 
    console.log(Example.user.id);
    console.log(Example.user.name);
    
    至于您的另一个问题“在变量名中使用$”,当变量包含Jquery对象时,这是一种注释命名约定-


    谢谢,但是如果你不使用extemd怎么办,这似乎太神奇了,你希望学习。你可以手动复制属性,如或@ArunPJohny谢谢,请参阅我的更新。我的其他模块可以看到这些属性,我需要它。嗨,我想你必须在return语句中公开.settings和.user。谢谢。有有几种不同的方法可以做到这一点。这些方法是在返回的对象上设置的,因此它们是公开的。(在调用_init时强制上下文),如果我有另一个模块,如Example.someThing=(函数(…)();我似乎无法访问其中的Example.user。我如何才能做到b/c这是我所有这些的目标。不清楚您试图做什么。请澄清。或提供另一个代码示例。