var shell = function (method) {
window[method].apply(null, Array.prototype.slice.call(arguments, 1));
};
shell('alert', 'monkey!');
risposta
alert.apply è il problema. Alert non fa parte della lingua, quindi potrebbe non essere nemmeno una funzione. È dipendente dall'implementazione.
Right - IE espone le API su 'window' e sugli elementi DOM su Javascript, ma l'esposizione è limitata e generalmente non è possibile trattare tali elementi come se fossero componenti JavaScript" reali ". – Pointy
+1 sono d'accordo con i galambalaz. – Krunal
Buon punto, ma non dovrebbe funzionare: var shell = function (metodo) { var fn = window [metodo]; fn.apply = Function.prototype.apply; fn.apply (null, Array.prototype.slice.call (argomenti, 1)); }; shell ('alert', 'monkey!'); – shawndumas
perché IE è il male – Jimmy
Vedere la risposta a questa domanda: http://stackoverflow.com/questions/120804/difference-between-array-slice-and-array-slice –
no, Array.prototype.slice.call (argomenti, 1) è ok. – galambalazs