Est-il possible de convertir un tableau en JavaScript en une séquence d'arguments de fonctions? Exemple:
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);
}
}
Oui. Dans les versions actuelles de JS, vous pouvez utiliser:
app[func]( ...args );
Les utilisateurs de ES5 et plus âgés devront utiliser la méthode .apply()
:
app[func].apply( this, args );
Lisez ces méthodes sur 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);
Et ici un lien vers le message original que j'ai personnellement aimé pour sa lisibilité
app[func].apply(this, args);
Vous voudrez peut-être jeter un oeil à un question similaire posté sur Stack Overflow. Il utilise la méthode .apply()
pour accomplir cela.
@bryc - oui, vous pouvez le faire comme ceci:
Element.prototype.setAttribute.apply(document.body,["foo","bar"])
Mais cela semble être beaucoup de travail et de confusion par rapport à:
document.body.setAttribute("foo","bar")