我在 JavaScript 中迭代一个大对象的属性,并且遇到了一个瓶颈,特别是在我似乎无法编码的WebKit浏览器中。
基本上,如果我有一个主要由整数值作为属性(1、2、4、10678 等)键入的对象,然后添加一些长属性名称(“somelongdescriptorofaproperty”),则迭代对象时的性能会降低10 倍或更多(在我最坏的情况下是 80 倍!)
如果我有一个对象的属性是很多短字符串和一些长字符串,则不会发生这种情况,因此这不是“整数只是更快的家伙”的情况。将两者混合似乎是一个因素。
看看这个名字不好的 jsperf 来了解我的观点 --> http://jsperf.com/object-recursion
为什么会这样?这是 WebKit 的“功能”吗?有什么方法可以解决这个问题?拥有只包含整数属性和冗长属性的单独对象?