var shell = function (method) {
window[method].apply(null, Array.prototype.slice.call(arguments, 1));
};
shell('alert', 'monkey!');
Répondre
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.
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
+1 d'accord avec galambalazs. – Krunal
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
car IE est mal – Jimmy
Voir la réponse à cette question: http://stackoverflow.com/questions/120804/difference-between-array-slice-and-array-slice –
non, Array.prototype.slice.call (arguments, 1) est ok. – galambalazs