PHPが持っていることは知ってcall_user_func
いますが、JavaScriptに似たようなものがあるのではないかと思っていました。たとえば、呼び出したいメソッドは次のとおりです。object.set$fieldID($fieldValue)
1行のコードを適切に実行するためだけに、if / else/switchブロックを通過したくありません。
それが役に立ったら、私はjQueryを使用しています。
PHPが持っていることは知ってcall_user_func
いますが、JavaScriptに似たようなものがあるのではないかと思っていました。たとえば、呼び出したいメソッドは次のとおりです。object.set$fieldID($fieldValue)
1行のコードを適切に実行するためだけに、if / else/switchブロックを通過したくありません。
それが役に立ったら、私はjQueryを使用しています。
object["set" + $fieldID]($fieldValue);
上記のいくつかの読み物:MDCのメンバーオペレーター。
いくつかの高度なメソッドには、とが含まFunction.prototype.call
れFunction.prototype.apply
ます。前者はどういうわけかPHPと同等call_user_func()
ですが、後者はどういうわけかPHPと同等call_user_func_array()
です。
PHPの関数とJavaScriptの関数の違いは、JavaScriptを使用すると、あるオブジェクトのメソッドを別のオブジェクトのコンテキストで呼び出すことができることです。call()
これは、との最初の引数を使用して行われますapply()
。
上記の例と同等ですが、を使用するcall()
とapply()
次のようになります。
object["set" + $fieldID].call(object, $fieldValue);
object["set" + $fieldID].apply(object, [$fieldValue]);
ブラウザの場合、最初の引数はグローバルオブジェクトにバインドobject
されたポインタを使用して実行されます。this
window
@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']();