1

さまざまな状況に応じて、いくつかの機能を選択的に実行する必要があります。私はこのような基本的なオブジェクトを持っています:

object = {
  whatever : {
    objects : null
  },
  something : {
    objects : // some object
  }
};

オブジェクトの値を反復処理する必要があります。そうである場合objectsnot null、特定の関数を実行する必要があります。whatever.objectsnullでない場合は、を実行する必要がありますwhateverFunction();something.objectsnullでない場合は、を実行する必要がありますsomethingFunction();

for( i in object )
{
  if ( object[i].objects )
    // run a certain function
}

オブジェクトの値に基づいてこれらの人工的に名前が付けられた関数を実行するための最良の方法は何ですか?「実行する関数」の名前をオブジェクトとeval()それに格納することはできますが、評価を避けたいと思います。

それぞれが実行される独自の関数を持つクラスオブジェクトを作成する方が理にかなっていますか?もしそうなら、これをどのように行うのでしょうか?

4

2 に答える 2

5
object = {
  whatever : {
    objects : null,
    func : whateverFunction
  },
  something : {
    objects : // some object,
    func : somethingFunction
  }
};

for (var i in object) {
  if (object[i].objects) {
    objects[i].func();
  }
}

関数はそれ自体がオブジェクトであり、受け渡しして保存することができます。関数の名前を保存する必要はありません。関数自体を保存します。

于 2012-12-20T03:41:04.383 に答える
1

whateverFunction()somethingFunction()がグローバルである場合は、次のようなものを試してください

var funcName = 'somethingFunction';

window[funcName]();
于 2012-12-20T03:40:39.173 に答える