var shell = function (method) {
window[method].apply(null, Array.prototype.slice.call(arguments, 1));
};
shell('alert', 'monkey!');
ответ
alert.apply есть проблема. Предупреждение не является частью языка, так что это может быть даже не функция. Это зависит от реализации.
Право - IE предоставляет API-интерфейсы на 'window' и на элементах DOM для Javascript, но экспозиция ограничена, и вы вообще не можете рассматривать такие вещи, как если бы они были« реальными »компонентами Javascript. – Pointy
+1 согласен с galambalazs. – Krunal
Хорошая точка, но тогда не должна эта работа: var shell = function (method) { var fn = window [method]; fn.apply = Function.prototype.apply; fn.apply (null, Array.prototype.slice.call (аргументы, 1)); }; shell ('alert', 'monkey!'); – shawndumas
потому что IE злой – Jimmy
См. Ответ на этот вопрос: http://stackoverflow.com/questions/120804/difference-between-array-slice-and-array-slice –
нет, Array.prototype.slice.call (аргументы, 1) в порядке. – galambalazs