JavaScriptの配列を関数の引数シーケンスに変換することは可能ですか?例:
run({ "render": [ 10, 20, 200, 200 ] });
function run(calls) {
var app = .... // app is retrieved from storage
for (func in calls) {
// What should happen in the next line?
var args = ....(calls[func]);
app[func](args); // This is equivalent to app.render(10, 20, 200, 200);
}
}
はい。 JSの現在のバージョンでは、次を使用できます。
app[func]( ...args );
ES5以前のユーザーは、.apply()
メソッドを使用する必要があります。
app[func].apply( this, args );
MDNでこれらのメソッドを読んでください:
var args = [ 'p0', 'p1', 'p2' ];
function call_me (param0, param1, param2 ) {
// ...
}
// Calling the function using the array with apply()
call_me.apply(this, args);
ここで元の投稿へのリンク 私はその読みやすさのために個人的に好きだった
app[func].apply(this, args);
Stack Overflowに投稿された 類似した質問 をご覧ください。 .apply()
メソッドを使用してこれを実現します。
@bryc-はい、次のようにできます:
Element.prototype.setAttribute.apply(document.body,["foo","bar"])
しかし、それは多くの作業と難読化のように思えます:
document.body.setAttribute("foo","bar")