为什么 ECMAScript 5 中的 Object 没有 forEach 方法?

2024-05-07

ECMAScript 5 的array.forEach(callback[, thisArg])迭代数组非常方便,并且比 for 语法有很多优点:

  • 这样更简洁。
  • 它不会创建我们仅用于迭代目的的变量。
  • 它为循环的局部变量创建可见范围。
  • 它提高了性能。

有没有理由object.forEach取代for(var key in object) ?

当然,我们可以使用 JavaScript 实现,例如 _.each 或 $.each,但这些都是性能杀手。


嗯,自己装备起来很容易。为什么要进一步污染原型?

Object.keys(obj).forEach(function(key) {
  var value = obj[key];
});

我认为一个重要的原因是,当权者希望避免添加内置属性Object. Objects 是 Javascript 中所有内容的构建块,也是该语言中的通用键/值存储。添加新属性Object会与您的 Javascript 程序可能想要使用的属性名称发生冲突。因此添加内置名称Object是非常谨慎地完成的。

数组是按整数索引的,所以不存在这个问题。

这也是为什么我们有Object.keys(obj)而不是简单地obj.keys。污染Object构造函数,因为它通常没什么大不了的,但不要管实例。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 ECMAScript 5 中的 Object 没有 forEach 方法? 的相关文章

随机推荐