Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. JavaScript
  3. JavaScript-Referenz
  4. Eingebaute Standardobjekte
  5. RegExp
  6. [Symbol.species]

Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.

View in EnglishAlways switch to English

RegExp[Symbol.species]

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨September 2016⁩.

Die statische ZugriffseigenschaftRegExp[Symbol.species] gibt den Konstruktor zurück, der zum Erstellen kopierter regulärer Ausdrücke in bestimmtenRegExp-Methoden verwendet wird.

Warnung:Das Vorhandensein von[Symbol.species] ermöglicht die Ausführung von beliebigem Code und kann Sicherheitslücken schaffen. Es macht auch bestimmte Optimierungen viel schwieriger. Die Entwickler von Enginesuntersuchen, ob dieses Feature entfernt werden soll. Vermeiden Sie es, sich darauf zu verlassen, wenn möglich.

Syntax

js
RegExp[Symbol.species]

Rückgabewert

Der Wert des Konstruktors (this), auf demget [Symbol.species] aufgerufen wurde. Der Rückgabewert wird verwendet, um kopierteRegExp-Instanzen zu erstellen.

Beschreibung

Die Zugriffseigenschaft[Symbol.species] gibt den Standardkonstruktor fürRegExp-Objekte zurück. Unterklasse-Konstruktoren können dies überschreiben, um die Zuweisung des Konstruktors zu ändern. Die Standardimplementierung ist im Wesentlichen:

js
// Hypothetical underlying implementation for illustrationclass RegExp {  static get [Symbol.species]() {    return this;  }}

Aufgrund dieser polymorphen Implementierung würde[Symbol.species] von abgeleiteten Unterklassen standardmäßig auch den Konstruktor selbst zurückgeben.

js
class SubRegExp extends RegExp {}SubRegExp[Symbol.species] === SubRegExp; // true

EinigeRegExp-Methoden erstellen eine Kopie der aktuellen Regex-Instanz, bevorexec() ausgeführt wird, damit Nebeneffekte wie Änderungen anlastIndex nicht erhalten bleiben. Die Eigenschaft[Symbol.species] wird verwendet, um den Konstruktor der neuen Instanz zu bestimmen. Die Methoden, die die aktuelle Regex-Instanz kopieren, sind:

Beispiele

Species in gewöhnlichen Objekten

Die Eigenschaft[Symbol.species] gibt die Standardkonstrukturfunktion zurück, die derRegExp-Konstruktor fürRegExp-Objekte ist:

js
RegExp[Symbol.species]; // function RegExp()

Species in abgeleiteten Objekten

In einer Instanz einer benutzerdefiniertenRegExp-Unterklasse, wieMyRegExp, ist die SpeziesMyRegExp derMyRegExp-Konstruktor. Sie könnten dies jedoch überschreiben wollen, um in Ihren abgeleiteten Klassenmethoden Eltern-RegExp-Objekte zurückzugeben:

js
class MyRegExp extends RegExp {  // Overwrite MyRegExp species to the parent RegExp constructor  static get [Symbol.species]() {    return RegExp;  }}

Oder Sie können dies nutzen, um den Kopiervorgang zu beobachten:

js
class MyRegExp extends RegExp {  constructor(...args) {    console.log("Creating a new MyRegExp instance with args:", args);    super(...args);  }  static get [Symbol.species]() {    console.log("Copying MyRegExp");    return this;  }  exec(value) {    console.log("Executing with lastIndex:", this.lastIndex);    return super.exec(value);  }}Array.from("aabbccdd".matchAll(new MyRegExp("[ac]", "g")));// Creating a new MyRegExp instance with args: [ '[ac]', 'g' ]// Copying MyRegExp// Creating a new MyRegExp instance with args: [ MyRegExp /[ac]/g, 'g' ]// Executing with lastIndex: 0// Executing with lastIndex: 1// Executing with lastIndex: 2// Executing with lastIndex: 5// Executing with lastIndex: 6

Spezifikationen

Specification
ECMAScript® 2026 Language Specification
# sec-get-regexp-%symbol.species%

Browser-Kompatibilität

Siehe auch

Help improve MDN

Learn how to contribute Diese Seite wurde automatisch aus dem Englischen übersetzt.

[8]ページ先頭

©2009-2025 Movatter.jp