跳至内容

eslint/no-iterator 限制

🚧 还有一项自动修复正在开发中。

其功能

禁止使用 __iterator__ 属性

为什么这样做是不好的?

__iterator__ 属性是对 JavaScript 的 SpiderMonkey 扩展,它可用于创建与 JavaScript 的 for in 和 for each 构造兼容的自定义迭代器。但是,此属性现已过时,因此不应使用。下面是该属性以前如何运作的示例

js
Foo.prototype.__iterator__ = function () {
  return new FooIterator(this);
};

示例

针对此规则的错误代码示例

javascript
Foo.prototype.__iterator__ = function () {
  return new FooIterator(this);
};

foo.__iterator__ = function () {};

foo["__iterator__"] = function () {};

针对此规则的正确代码示例

js
const __iterator__ = 42; // not using the __iterator__ property

Foo.prototype[Symbol.iterator] = function () {
  return new FooIterator(this);
};

参考

在 MIT 许可证下发布。