为什么布尔值true在IE中有toJSON方法?

时间:2013-02-22 02:19:20

标签: javascript internet-explorer internet-explorer-8 cross-browser jquery-ui-widget

这是一个奇怪的IE怪癖。以下是步骤:

  1. 转到Internet Explorer 8中的msn.com
  2. 拉起开发工具
  3. 将浏览器模式切换为“IE8 Compat View”
  4. 将文档模式切换为“IE7标准”
  5. 切换到“脚本”标签
  6. 运行以下脚本:true.toJSON()
  7. 它返回true。没有其他浏览器这样做。它给了我一些问题,因为它导致jQueryUI的工具提示小部件失败,因为在某些时候它将布尔值true传递给$.isEmptyObject()。通常传递true只会返回true,但由于true现在有一个与之关联的方法(toJSON),它将返回false并打破小部件。

    我注意到有一些网站(比如谷歌)可以尝试进行相同的测试而true.toJSON()只是休息而不返回任何内容。什么是这种奇怪的toJSON方法,我该如何摆脱它?

2 个答案:

答案 0 :(得分:2)

来自the jQuery.isEmptyObject() documentation

  

参数应该始终是一个普通的JavaScript Object作为其他类型   对象(DOM元素,原始字符串/数字,宿主对象)可以   不能跨浏览器提供一致的结果。

换句话说,修复工具提示小部件。

答案 1 :(得分:0)

toJSON是一种方法,如果在对象上定义,则指定JSON.stringify对其起作用的方式。查看MDN了解详情。