2

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

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

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

var obj = new obj();

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

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

4

2 回答 2

1

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

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

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

for (var prop in obj) {
  if (obj.hasOwnProperty(prop) && prop.match(/^__init.*$/)) {
    obj[prop]();
  }
}
于 2013-10-20T09:35:36.200 回答
0

我不确定我是否完全理解你想要的,但这可能有效:

var obj = {

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

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

或者作为你的 obj 的一部分:

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();
于 2013-10-20T09:34:09.213 回答