jquery - $.isPlainObject($ ('...' )) == true 在 IE 中

标签 jquery internet-explorer

FF/Chrome 中没有,我认为 IE 中也不应该有。毕竟 $() 不返回普通对象,而是返回 $ 的实例。我错了吗?

最佳答案

简短回答: 不,你没有疯,这确实是 jQuery 核心中的一个错误。

<小时/>

长答案:

我设置了一个快速测试来看看这里有什么区别:http://jsfiddle.net/nick_craver/9J3VP/

属性列表在 IE 中的顺序不同(至少 8 个),因此这部分 ( from jQuery core ):

var key;
for ( key in obj ) { }

它获取列表中的最后一个属性并对其进行 hasOwnProperty 检查,因此在 IE 中可以归结为以下内容:

Object.prototype.hasOwnProperty.call($(document.body), 'length') //true

在其他浏览器中(已测试 FF/Chrome):

Object.prototype.hasOwnProperty.call($(document.body), 'width') //false

由于属性列表的顺序不同,它在 IE 中获取 length 属性,而在其他浏览器中则获取 else 属性,因此我们得到了不同的结果(对于踢,单击以在左侧包含 jQuery UI,观察它更改为另一个自定义属性,tabs)。 This comment above the for loop :

// Own properties are enumerated firstly, so to speed up,
// if last one is own, then all properties are own.

这是关于 IE 属性排序的错误假设,因此我认为这是 jQuery 1.4.2 中的一个错误。

关于jquery - $.isPlainObject($ ('...' )) == true 在 IE 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3399649/

相关文章:

javascript - 删除 Internet Explorer 中的事件监听器

javascript - AngularJS 自定义过滤器不适用于 iOS 和 IE

javascript - jQuery:将 setIntervals 分配给数组时出现问题

javascript - 如何从nodejs中的Spotify API获取播放列表的每一页

internet-explorer - CSS3 站点不能在 IE 中运行。即使是IE10

html - 为什么在IE11上使用css缩放时仍然显示Y轴滚动条?

javascript - JQuery 自动完成功能不能与 js 对象一起正常工作

javascript - 使用 addEventListener 识别 chrome 扩展中元素的 id

javascript - jQuery 框 fadeOut/fadeIn 在 mouseleave 后闪烁

node.js - 无需 PATH 变量的 Internet Explorer 驱动程序