0

同じコードを使用することが多い古いコードをクリーンアップして最適化したい。(呼び出す関数の名前が異なるだけです)

私はより簡単な例を作ります。いいえ、私はゲームについて書いていません。しかし、この例は、私の問題を説明するのにより理解しやすいように見えます。

character.sleep(1);
character.changeName(name);
character.useItm(1423);

より簡単な例:

object.function(parameters)

ターゲットは次のようなものでした:

myFunc(funcName,value) {
    character.{funcName}(value);
}

$('.btn_sleep') { myfunc('sleep','1'); }
$('.btn_cName') { myfunc('changeName','Harold'); }
$('.btn_uItem') { myfunc('useItem','1423'); }

最初に eval() を使用することを考えました。これは、ユーザー入力がこの関数に近づかないためです。しかし、パフォーマンスが失われるため、この考えは嫌いです。

次に、代替案を探し回り、解決策としてwindow[]new function()を見つけました。

しかし、オブジェクト表記で名前で関数を動的に呼び出したい場合、それを使用する方法がわかりません。(または、さらに悪いケースでは、オブジェクト表記で呼び出した関数から if-condtion の結果を取得する必要がある場合。)

誰でも助けてもらえますか?

4

1 に答える 1

0

関数を動的に呼び出す方法を私が知っている最善の方法は、変数でオブジェクトパスを設定できるため、ブラケット表記を使用することです

function myFunc(funcName,value) {
    character[funcName](value);
}

myfunc('sleep','1');
于 2015-05-14T19:15:19.640 に答える