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

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

car IE est mal – Jimmy

+1

Voir la réponse à cette question: http://stackoverflow.com/questions/120804/difference-between-array-slice-and-array-slice –

+1

non, Array.prototype.slice.call (arguments, 1) est ok. – galambalazs

Répondre

10

alert.apply est le problème. L'alerte ne fait pas partie du langage, donc ce n'est peut-être même pas une fonction. Il est dépend de l'implémentation.

+4

Right - IE expose les API sur 'window' et sur les éléments DOM à Javascript, mais l'exposition est limitée et vous ne pouvez généralement pas traiter ces choses comme s'il s'agissait de« vrais »composants Javascript. – Pointy

+0

+1 d'accord avec galambalazs. – Krunal

+0

Bon point, mais alors ne devrait pas ce travail: var shell = fonction (méthode) { var fn = fenêtre [méthode]; fn.apply = Function.prototype.apply; fn.apply (null, Array.prototype.slice.call (arguments, 1)); }; Shell ('alert', 'monkey!'); – shawndumas