2010-07-06 26 views
9
var shell = function (method) { 
     window[method].apply(null, Array.prototype.slice.call(arguments, 1)); 
    }; 

shell('alert', 'monkey!'); 
+12

porque IE es malo – Jimmy

+1

Ver la respuesta a esta pregunta: http://stackoverflow.com/questions/120804/difference-between-array-slice-and-array-slice –

+1

no, Array.prototype.slice.call (argumentos, 1) está bien. – galambalazs

Respuesta

10

alert.apply es el problema. La alerta no es parte del lenguaje, por lo que puede que ni siquiera sea una función. Es dependiente de la implementación.

+4

Correcto - IE expone las API en 'ventana' y en los elementos DOM a Javascript, pero la exposición es limitada y generalmente no puede tratar tales cosas como si fueran componentes Javascript" reales ". – Pointy

+0

+1 de acuerdo con galambalazs. – Krunal

+0

Buen punto, pero entonces no debería funcionar: var shell = function (método) { var fn = window [method]; fn.apply = Function.prototype.apply; fn.apply (null, Array.prototype.slice.call (arguments, 1)); }; shell ('alerta', 'mono!'); – shawndumas

Cuestiones relacionadas