ich dieses Thema gefunden habe, die ich (siehe akzeptierte Antwort) implementiert haben:
javascript equivalent of PHP's call_user_func()Javascript-Äquivalent von PHP call_user_func
Allerdings habe ich mit mehreren Parametern ein Problem habe. Mir ist klar, dass ich meine Parameter in Strings verwandelte und sie wie einen Parameter behandelte, aber ich weiß nicht, wie ich das beheben kann, weil ich die Parameter dynamisch erstelle.
Bedeutung, ich habe folgendes in meinem Code definiert:
var a = new Array();
a[0] = new Array();
a[0][0] = 'alert';
a[0][1] = '\'Hello World\'';
a[1] = new Array();
a[1][0] = 'setTimeout';
a[1][1] = 'alert("goodbye world")';
a[1][2] = '20';
Später wurde ich sie so nennen:
var j = 0;
var len = 0;
var fx = '';
var params = '';
for(i in a){
params = '';
len = a[i].length;
fx = a[i][0]; // getting the function name
a[i].splice(0, 1); // removing it from array
if(len > 1){
params = a[i].join(", "); // trying to turn the parameters into the right format, but this is turning it into strings I think
params = params.replace(/\\'/g,'\''); // bc i was adding slashes with PHP
}
window[fx](params);
}
Ich muss das nicht Arrays verwenden zu tun. Ich verstehe JS OOP nicht (habe es noch nicht ausprobiert), obwohl ich mich mit PHP OOP auskenne, also weiß ich nicht, ob es einen Weg gibt, dies zu tun.
Jede Hilfe bei der Übergabe mehrerer Parameter wäre willkommen.
Danke.
'fenster [fx] .apply (obj, params)' – Cheeso
Sie schießen sich in den Fuß hier. Für Anfänger: Sie sollten kein Array haben, das Code als * Strings * enthält, das ist einfach falsch. Und fangen Sie nicht damit an, diese Strings mit Regex zu interpretieren. Was versuchst du zu machen? Weiter: ** Benutze niemals eine 'for .. in'-Schleife für ein Array und du solltest' new Array() 'überhaupt nicht verwenden. – Tomalak