変数namespace
を持っています。その名前空間から関数を呼び出す必要があります。私は変数namespace
の外に関数を書いています。 window[functionName]
を使用すると、その関数が呼び出して実行しています。変数名空間または変数名前空間の外で関数を呼び出すためにevalを置き換えます。
変数ネームスペース内に関数を配置すると、その関数が呼び出されないとします。 eval
を使用している場合は動作しています。変数namespace.window[funcitonName].call(args)
内の関数を呼び出すためのeval
の置換は、その関数がグローバルである場合にのみ実行されます。
私の要件は、このようなものです:
var xxx = xxx || function($) {
function onVehicleChange(..., functionName, ....) {
window[functionName](this, args);
}
function maruthiVehicle(args) {
}
}
ここに私が動的に関数名を取得しています。ここで私のfunctionName
がmaruthiVehicle
であるとします。私はここでその機能をハードコーディングしています。
window[functionName]
は、が変数namespace(XXX)
の中にあるため、window[maruthiVehicle]
となります。私がfunction(maruthiVehicle)
をこの変数の外に置いたとすると、それはうまくいきます。
したがってwindow[functionName]
ここではglobal
スコープでのみ動作します。私はeval
を使ってみました。変数namepsace
の外側または内側に関数を置くとeval
が正常に動作しています。
私はeval
を使用しません。私はこのeval
の交換が欲しいです。
eval(functionName + "(args)");
変数内または変数名前空間外の関数の配置に関係なく、my関数呼び出しはトリガを取得する必要があります。
あなたのコメントを削除したり**答えを編集**したり、あなたのコメントに説明を追加して、より明確にすることができます。あなたの答えに答えを記入してください。 –
@あなたの提案に従ってスニークが追加されました。 – Ravi
@スニークコメントも削除されました – Ravi