【问题标题】:Invalid Calling Object error in IEIE 中的无效调用对象错误
【发布时间】:2015-02-12 08:15:22
【问题描述】:

所以我在尝试执行以下操作时在 IE11 中收到错误“无效调用对象”:

window.toString.call({});

当我期望看到 => "[object Object]"

这种形式似乎有效:

({}).toString();

这两种形式在 chrome 中似乎都可以正常工作,我错过了什么吗?

【问题讨论】:

    标签: javascript internet-explorer internet-explorer-11


    【解决方案1】:

    你似乎忽略了事实

    window.toString === Object.prototype.toString; // false
    

    Window 的 toString 是特定于实现的,规范中没有说明 DOM 宿主对象 上的方法必须与 call/ 其他对象一起使用/等

    如果你想捕获这个toString 但不能假设原型,试试

    var toString = ({}).toString;
    toString.call({}); // "[object Object]"
    

    您也可以考虑通过包装或使用 bind 每次跳过 call

    var toString = function (x) { return ({}).toString.call(x); };
    toString(10); // "[object Number]"
    // or
    var toString = ({}).toString.call.bind(({}).toString);
    toString(true); // "[object Boolean]"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-02
      • 2014-03-17
      • 2019-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多