var shell = function (method) {
window[method].apply(null, Array.prototype.slice.call(arguments, 1));
};
shell('alert', 'monkey!');
Antwort
alert.apply ist das Problem. Alert ist kein Teil der Sprache, es kann also nicht einmal eine Funktion sein. Es ist implementierungsabhängig.
Richtig - IE exponiert APIs auf 'window' und auf DOM-Elementen auf Javascript, aber die Exposition ist begrenzt und Sie können solche Dinge im Allgemeinen nicht behandeln, als wären sie" echte "Javascript-Komponenten. – Pointy
+1 zustimmen mit Galambalazs. – Krunal
Guter Punkt, aber dann sollte das nicht funktionieren: var shell = Funktion (Methode) { var fn = Fenster [Methode]; fn.apply = Function.prototype.apply; fn.apply (null, Array.prototype.slice.call (Argumente, 1)); }; Shell ('Alarm', 'Affe!'); – shawndumas
weil IE ist böse – Jimmy
Siehe die Antwort auf diese Frage: http://stackoverflow.com/questions/120804/difference-between-array-slice-and-array-slice –
nein, Array.prototype.slice.call (Argumente, 1) ist in Ordnung. – galambalazs