这适用于Chrome,但不适用于IE,为什么?

sha*_*mas 9 javascript global apply window-object

var shell = function (method) {
        window[method].apply(null, Array.prototype.slice.call(arguments, 1));
    };

shell('alert', 'monkey!');
Run Code Online (Sandbox Code Playgroud)

gbl*_*zex 10

alert.apply是问题所在.警报不是语言的一部分,因此它甚至可能不是一种功能.它取决于实现.

  • 对 - IE将`window`和DOM元素上的API暴露给Javascript,但是暴露是有限的,你通常不能将这些东西视为"真正的"Javascript组件. (4认同)
  • 不.问题在于`window`是一个宿主对象,`alert`是宿主对象的属性,宿主对象没有义务像本机对象一样.以下问题与您的问题类似:http://stackoverflow.com/questions/3060318/js-proxy-pattern-problem (4认同)