Skip to content

eslint/no-iterator Restriction

💡 A suggestion is available for this rule.

What it does

Disallow the use of the __iterator__ property

Why is this bad?

The __iterator__ property was a SpiderMonkey extension to JavaScript that could be used to create custom iterators that are compatible with JavaScript’s for in and for each constructs. However, this property is now obsolete, so it should not be used. Here’s an example of how this used to work:

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

Example

Examples of incorrect code for this rule:

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

foo.__iterator__ = function () {};

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

Examples of correct code for this rule:

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

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

How to use

To enable this rule in the CLI or using the config file, you can use:

bash
oxlint --deny no-iterator
json
{
  "rules": {
    "no-iterator": "error"
  }
}

References

Released under the MIT License.