Javascript 这在Chrome中有效,但在IE中无效,为什么?

Javascript 这在Chrome中有效,但在IE中无效,为什么?,javascript,global,apply,window-object,Javascript,Global,Apply,Window Object,警报。应用是问题所在警报不是语言的一部分,因此它甚至可能不是一个函数。它取决于实现 因为IE是可以看到这个问题的答案的:不,Array.prototype.slice.call(arguments,1)是可以的。@Tim他已经在使用Array.prototype.slice@Jimmy这里不是这样的。该标准并不坚持这种行为。对-IE将window和DOM元素上的API公开给Javascript,但公开是有限的,您通常不能将这些东西视为“真正的”Javascript组件。这一点很好,但不应该起作用

警报。应用是问题所在警报不是语言的一部分,因此它甚至可能不是一个函数。它取决于实现

因为IE是可以看到这个问题的答案的:不,Array.prototype.slice.call(arguments,1)是可以的。@Tim他已经在使用
Array.prototype.slice
@Jimmy这里不是这样的。该标准并不坚持这种行为。对-IE将
window
和DOM元素上的API公开给Javascript,但公开是有限的,您通常不能将这些东西视为“真正的”Javascript组件。这一点很好,但不应该起作用:var shell=function(method){var fn=window[method];fn.apply=Function.prototype.apply;fn.apply(null,Array.prototype.slice.call(arguments,1));};shell('alert','monkey!');不是。问题在于
window
是一个宿主对象,而
alert
是宿主对象的属性,宿主对象的行为不必像本机对象一样。下面的问题与您的问题类似:愚蠢的IE。如果更好的方法失败,我就放弃并使用eval。
var shell = function (method) {
        window[method].apply(null, Array.prototype.slice.call(arguments, 1));
    };

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