因此,当我尝试执行以下操作时,我在IE11中收到错误“无效的调用对象”:
window.toString.call({});
当我希望看到=> “[object Object]”
这个表格似乎有效:
({}).toString();
这两种形式在chrome中都能正常工作,我错过了什么吗?
答案 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]"