SharedArrayBuffer[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 December 2021.

SharedArrayBuffer[Symbol.species] 정적 접근자 속성은 SharedArrayBuffer 메서드에서 반환 값을 생성하는 데 사용되는 생성자를 반환합니다.

경고 :> [Symbol.species]의 존재로 인해 임의의 코드 실행이 가능하며, 이는 보안 취약점을 만들 수 있습니다. 또한 특정 최적화를 매우 어렵게 만듭니다. 엔진 구현자들은이 기능을 제거할지 검토 중입니다. 가능하다면 이 기능에 의존하지 않는 것이 좋습니다.

구문

js
SharedArrayBuffer[Symbol.species]

반환 값

get [Symbol.species]가 호출된 생성자(this)의 값입니다. 이 반환 값은 새로운 배열 버퍼를 생성하는 배열 버퍼 메서드의 반환 값을 구성하는 데 사용됩니다.

설명

[Symbol.species] 접근자 속성은 SharedArrayBuffer 객체의 기본 생성자를 반환합니다. 하위 클래스 생성자는 이를 재정의하여 생성자 할당을 변경할 수 있습니다. 기본 구현은 기본적으로 다음과 같습니다.

js
// 설명을 위한 가상의 기본 구현
class SharedArrayBuffer {
  static get [Symbol.species]() {
    return this;
  }
}

이러한 다형성 구현으로 인해, 파생된 하위 클래스의 [Symbol.species]도 기본적으로 생성자 자체를 반환합니다.

js
class SubArrayBuffer extends SharedArrayBuffer {}
SubArrayBuffer[Symbol.species] === SharedArrayBuffer; // true

기존 배열을 변경하지 않고 새로운 배열 버퍼 인스턴스를 반환하는 배열 버퍼 메서드(예: slice())를 호출할 때, 배열의 constructor[Symbol.species]에 접근합니다. 반환된 생성자는 배열 버퍼 메서드의 반환 값을 구성하는 데 사용됩니다.

예제

원본 객체에서 Species

[Symbol.species] 속성은 기본 생성자 함수를 반환합니다. SharedArrayBuffer의 경우 이는 SharedArrayBuffer 생성자입니다.

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

파생 객체에서 Species

MySharedArrayBuffer와 같은 사용자 정의 SharedArrayBuffer 하위 클래스의 인스턴스에서, MySharedArrayBuffer species는 MySharedArrayBuffer의 생성자입니다. 그러나 파생 클래스 메서드에서 부모 SharedArrayBuffer 객체를 반환하고 싶다면 이를 재정의할 수 있습니다.

js
class MySharedArrayBuffer extends SharedArrayBuffer {
  // SharedArrayBuffer species를 부모 SharedArrayBuffer 생성자로 덮어 씌웁니다.
  static get [Symbol.species]() {
    return SharedArrayBuffer;
  }
}

명세서

Specification
ECMAScript® 2025 Language Specification
# sec-sharedarraybuffer-%symbol.species%

브라우저 호환성

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
[Symbol.species]

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support

같이 보기