私はちょうどJavaScriptは私が呼び出したいメソッドは、例えば、似たような、持っていた場合には思っていた、PHPはcall_user_func
を持って知っている:object.set$fieldID($fieldValue)
eval()の関数を呼び出すときに、より安全な方法は何ですか?
を/他には/だけで実行するブロックを切り替えると、私はむしろ通じ行かないだろう1行のコードが適切に表示されます。
私が役に立ったら、私はjQueryを使用しています。
私はちょうどJavaScriptは私が呼び出したいメソッドは、例えば、似たような、持っていた場合には思っていた、PHPはcall_user_func
を持って知っている:object.set$fieldID($fieldValue)
eval()の関数を呼び出すときに、より安全な方法は何ですか?
を/他には/だけで実行するブロックを切り替えると、私はむしろ通じ行かないだろう1行のコードが適切に表示されます。
私が役に立ったら、私はjQueryを使用しています。
object["set" + $fieldID]($fieldValue);
上記のためのいくつかの読み物:MDCにMember Operators。
いくつかの高度な方法には、Function.prototype.call
とFunction.prototype.apply
が含まれます。最初はなんでもと同等で、後者はとなり、PHPのcall_user_func_array()
に相当します。
PHPの関数とJavaScriptの違いは、JavaScriptではあるオブジェクトのメソッドを別のオブジェクトのコンテキストで呼び出すことができることです。これは、最初の引数call()
とapply()
の使用によって行われます。
上記の例の等価が、call()
とapply()
を使用してこのようになります。最初の引数はobject
そうでない場合、方法は、グローバルオブジェクトにバインドthis
ポインタで実行される、window
なければならない
object["set" + $fieldID].call(object, $fieldValue);
object["set" + $fieldID].apply(object, [$fieldValue]);
ブラウザの場合は
@lonutが正しい。すべてのオブジェクトがwindow
に含まれているので
var foo = function() { alert(1); };
window['foo']();
:明示的なオブジェクト(例えば:グローバル)の一部ではない関数を呼び出したい場合はより一般的に、しかし、あなたはwindow
オブジェクトにそれらを呼び出すことができます。
もう一つの例:
var object = function() { this.method = function() { alert(2); }; }
var instance = new object();
window['instance']['method']();
はい、 'window'や' this ['foo'](); '(グローバルオブジェクトの名前が' window'でない場合)を使ってグローバル関数を呼び出すことは便利です。 +1 –
ありがとうございます追加情報:) –
あなたの先生は、ダイヤモンドのおっさんです。ありがとう。 –