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

时间:2014-11-20 04:19:42

标签: javascript jquery module-pattern

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

  

Example.init({" settings":{" baseUrl":" http://example.com"},                  " user":{" id":123," name":" john doe"});

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

Example.settings.baseUrl
Example.user.id;
Example.user.name;

我目前正在使用这样的模块模式:

Example = (function(){

       var _init = function(data) {

       };

       return {
           init: function($data) {
              _init($data);
           }
       };
})();

Example.module2 =(function(){

       var _init = function(data) {
          if(Example.user.id > 0) {    // referencing data set in the Example.init

          }
       };

       return {
           init: function($data) {
              _init($data);
           }
       };
})();

我不确定如何展示这些属性,寻找解释和指导。

(请评论最佳做法,我应该使用$参数,如果是,那么?)

注意:这是我想要做的基本概要。

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

    Example.init({" settings":{" baseUrl":" http://example.com"}," user" :{" id":123," name":" john doe"});

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

  3. 这是否有时间问题?

1 个答案:

答案 0 :(得分:1)

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对象时,它是注释命名约定 -