3

PHPが持っていることは知ってcall_user_funcいますが、JavaScriptに似たようなものがあるのではないかと思っていました。たとえば、呼び出したいメソッドは次のとおりです。object.set$fieldID($fieldValue)

1行のコードを適切に実行するためだけに、if / else/switchブロックを通過したくありません。

それが役に立ったら、私はjQueryを使用しています。

4

2 に答える 2

9
object["set" + $fieldID]($fieldValue);

上記のいくつかの読み物:MDCメンバーオペレーター

いくつかの高度なメソッドには、とが含まFunction.prototype.callFunction.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されたポインタを使用して実行されます。thiswindow

于 2009-07-29T09:48:47.077 に答える
4

@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']();
于 2009-07-29T09:55:34.957 に答える