1. ホーム
  2. javascript

[解決済み] 変数に名前をつけたJavaScriptの関数を呼び出す【重複

2022-04-22 20:39:27

質問

私は、JavaScriptの関数名を含むJavaScript変数を持っています。この関数は、$.ajaxなどを使って読み込まれ、ページに配置されることで存在します。

どなたか、変数に指定されたjavascript関数を呼び出す方法を教えていただけませんか?

関数の名前が変数にあるのは、ページフラグメントを読み込むためのURL(現在のページに挿入される)に、呼び出す関数の名前が含まれているからです。

この解決策を実行する方法について、他の提案もお待ちしています。

どのように解決するのですか?

evalを避ける

この問題を解決するためには、JavaScriptについて以下のことを知っておく必要があります。

  1. 関数は第一級のオブジェクトなので、オブジェクトのプロパティになることができます(この場合、関数の名前は メソッド )、あるいは配列の要素であってもよい。
  2. 関数が属するオブジェクトを選択していない場合、その関数はグローバルスコープに属します。ブラウザの場合は、グローバルが存在するウィンドウというオブジェクトに関数をぶら下げることを意味します。
  3. 配列とオブジェクトは密接に関係しています。(噂では近親相姦の結果かもしれません!) 多くの場合、ドットを使って代用することができます。 . 角かっこではなく [] またはその逆。

あなたの問題は、角括弧の方法ではなく、ドットの方法の参照を考慮した結果である。

というようなものではダメなのか。

window["functionName"]();

これは、あなたの関数がグローバル空間に住んでいると仮定しての話です。もし名前空間化したのなら

myNameSpace["functionName"]();

evalを使わないようにし、setTimeoutやsetIntervalに文字列を渡さないようにしましょう。私はたくさんのJSを書いていますが、evalが必要になることはありません。evalが必要になるのは、その言語を十分に深く理解していないためです。スコープ、コンテキスト、シンタックスについて学ぶ必要があります。もしevalに行き詰まったら、ただ聞けばいい。