javascript - 为什么对象使用 `Symbol.iterator` ,而不是仅仅 `iterator`

标签 javascript

对象是否使用属性 Symbol.iterator 而不仅仅是 iterator 来防止我们覆盖对象原型(prototype)上的 iterator 属性?

如果是,还有其他原因吗?

只是想了解 JS 中的符号。

最佳答案

如果它只是迭代器,它可能会破坏具有名为迭代器的方法的对象的旧代码。同样,每当 JS 设计者想要让开发人员向他们的对象添加其他特殊方法时,他们就会冒着破坏现有名称和破坏现有代码的风险。

另一种方法是 Python 的 __double_underscore__ 约定,开发人员不应该定义这样命名的方法。

关于javascript - 为什么对象使用 `Symbol.iterator` ,而不是仅仅 `iterator`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53892196/

相关文章:

javascript - Angular 数组 : Creating a table form from 2-dimensional Javascript array

javascript - 当下拉列表的所选项目发生更改时如何执行查询

javascript - ES6 可迭代的约定?

javascript - 如何删除元素内的跨度?

javascript - d3.select ('svg' ).remove() 不删除图表

javascript - 将 JS 对象(键和值)展平为单个深度数组的最佳方法

javascript - AngularJS:使用框架是个好主意吗?

javascript - Jupyter Notebook但适用于HTML/JS/CSS?

javascript - jQuery 错误 : replaceWIth/html mangles my DOM (all tags go out of form tag)

javascript - 如果用户向下滚动,如何在 x 秒后自动转到顶部