javascript初始化对象属性

时间:2013-10-20 09:15:13

标签: javascript object methods initializing

这将是愚蠢的,但是...我为我的生活无法弄清楚如何初始化对象的所有方法。 例如

var obj = {
prop1: function() { ... },
prop2: function() { ... } //etc
}

无法在不调用的情况下弄清楚如何初始化它们 obj.prop1()和obj.prop2(),如果我知道10个以上的函数,这将变得乏味。 我也看过类似的东西,

var obj = new obj();

function obj() {
    this.init=function() { ... };
    this.init();
}

但是,据我所知,我必须独立初始化每一个。

2 个答案:

答案 0 :(得分:1)

我真的不明白为什么你需要为一个对象初始化10个不同的东西。

执行此操作的一种方法是在单个init方法中隐藏所有调用,但您仍然必须从那里运行所有10个方法。

另一种方法是将所有初始化方法命名为__initMyCustomInit之类的特殊方法。 之后,您可以遍历对象的所有属性,并使用正则表达式__init匹配^__init.*$

for (var prop in obj) {
  if (obj.hasOwnProperty(prop) && prop.match(/^__init.*$/)) {
    obj[prop]();
  }
}

答案 1 :(得分:0)

我不确定我是否完全理解你想要的东西,但这可行:

var obj = {

prop1: function() { return true; },
prop2: function() { return false; }

}
//init
for(var r in obj){
      obj[r](); // call!
}

或作为对象的一部分:

var obj = {
  prop1: function() { return true; },
  prop2: function() { return false; },
  init: function() {
     for(var r in this){
         //prevent calling your self...
         if (r!=='init'){
           this[r]();
         }
     } 
  }   
}

obj.init();