Skip to content

eslint/no-iterator Restriction ​

🚧 An auto-fix is still under development.

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);
};

References ​

Released under the MIT License.