IE中无效的调用对象错误

时间:2013-10-11 15:32:23

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

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

window.toString.call({});

当我希望看到=> “[object Object]”

这个表格似乎有效:

({}).toString();

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

1 个答案:

答案 0 :(得分:18)

你好像忽略了这个事实

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

Window的 toString是特定于实现的,规范中没有任何内容说 DOM Host Objects 上的方法必须与call一起使用/ on other objects / etc

如果您想捕获此toString但不能假设原型,请尝试

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

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

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