RegExp String Iterator — это объект, который представляет определенную итерацию над некоторым конкретным объектом экземпляра String, сопоставляя его с некоторым конкретным объектом экземпляра RegExp. Для объектов RegExp String Iterator не существует именованного конструктора. Вместо этого объекты RegExp String Iterator создаются путем вызова определенных методов объектов экземпляра RegExp.
- CreateRegExpStringIterator ( R, S, global, fullUnicode )
- The %RegExpStringIteratorPrototype% Object
CreateRegExpStringIterator ( R, S, global, fullUnicode )
Абстрактная операция CreateRegExpStringIterator (Создать строковый итератор регулярного выражения) принимает аргументы R, S, global и fullUnicode. При вызове она выполняет следующие шаги:
1. Утверждено: Тип Type(S) является Строкой. 2. Утверждено: Тип Type(global) является Логическим. 3. Утверждено: Тип Type(fullUnicode) является Логическим. 4. Пусть замыкание closure будет новым Абстрактным Замыканием без параметров, которое захватывает R, S, global и fullUnicode и при вызове выполняет следующие шаги: а. Повторить, i. Пусть совпадение match будет ? RegExpExec(R, S). ii. Если совпадение match является null, вернуть undefined. iii. Если global равно false, то 1. Выполнить ? Урожайность Yield(match). 2. Вернуть undefined. iv. Пусть matchStr будет ? ToString(? Get(совпадение, "0")). v. Если matchStr - пустая строка, тогда 1. Пусть thisIndex будет ℝ(? ToLength(? Get(R, "lastIndex"))). 2. Пусть nextIndex будет ! AdvanceStringIndex(S, thisIndex, fullUnicode). 3. Выполнить ? Установите Set(R, "lastIndex", 𝔽(nextIndex), true). vi. Выполнить ? Урожайность Yield(match). 5. Вернуть ! CreateIteratorFromClosure(closure, "%RegExpStringIteratorPrototype%", %RegExpStringIteratorPrototype%).
The %RegExpStringIteratorPrototype% Object
Объект %RegExpStringIteratorPrototype%:
- имеет свойства, которые наследуются всеми объектами RegExp String Iterator.
- это обычный объект.
- имеет внутренний слот [[Prototype]], значение которого %IteratorPrototype%.
- обладает следующими свойствами:
%RegExpStringIteratorPrototype%.next ( )
1. Вернуть ? GeneratorResume(значение this, empty, "%RegExpStringIteratorPrototype%").
%RegExpStringIteratorPrototype% [ @@toStringTag ]
Начальным значением свойства @@toStringTag является строковое значение «RegExp String Iterator«.
Это свойство имеет атрибуты {[[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: true}.
Информационные ссылки
Предыдущий раздел — ECMAScript | Свойства экземпляров RegExp
Стандарт ECMAScript — Раздел «RegExp String Iterator Objects» — https://tc39.es/ecma262/#sec-regexp-string-iterator-objects