ECMAScript | Объекты итератора строки RegExp

ECMAScript | Объекты итератора строки RegExp

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

ECMAScript | Условные обозначения