Spec-Zone.ru › JavaScript

ArrayBuffer[Symbol.species]

Базовый уровень Широко доступно

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 2015 года.

Статическое свойство-аксессор **ArrayBuffer[Symbol.species]** возвращает конструктор, используемый для создания возвращаемых значений из методов буфера массива.

Внимание: Существование [Symbol.species] позволяет выполнять произвольный код и может создавать уязвимости безопасности. Оно также значительно усложняет некоторые оптимизации. Разработчики движков исследуют возможность удаления этой функции. По возможности избегайте использования этой функции.

Синтаксис

ArrayBuffer[Symbol.species]

Возвращаемое значение

Значение конструктора (this), для которого был вызван get [Symbol.species]. Возвращаемое значение используется для создания возвращаемых значений из методов буфера массива, которые создают новые буферы массива.

Описание

Свойство-аксессор [Symbol.species] возвращает конструктор по умолчанию для объектов ArrayBuffer. Конструкторы подклассов могут переопределять его, чтобы изменить присвоение конструктора. Реализация по умолчанию выглядит примерно так:

// Hypothetical underlying implementation for illustration
class ArrayBuffer {
  static get [Symbol.species]() {
    return this;
  }
}

Благодаря этой полиморфной реализации, [Symbol.species] производных подклассов также по умолчанию будет возвращать сам конструктор.

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

При вызове методов буфера массива, которые не изменяют существующий объект, а возвращают новый экземпляр буфера массива (например, slice()), будет осуществляться доступ к constructor[Symbol.species] объекта. Возвращаемый конструктор будет использоваться для создания возвращаемого значения метода буфера массива.

Примеры

Спецификатор (species) в обычных объектах

Свойство [Symbol.species] возвращает конструктор по умолчанию, который является конструктором ArrayBuffer для ArrayBuffer.

ArrayBuffer[Symbol.species]; // function ArrayBuffer()

Спецификатор (species) в производных объектах

В экземпляре пользовательского подкласса ArrayBuffer, такого как MyArrayBuffer, спецификатор MyArrayBuffer — это конструктор MyArrayBuffer. Однако вы можете захотеть переопределить его, чтобы возвращать родительские объекты ArrayBuffer в методах вашего производного класса:

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

Спецификации

Спецификация
ECMAScript® 2027 Language Specification
# sec-get-arraybuffer-%symbol.species%

Совместимость с браузерами

Десктопные Мобильные Серверные
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet WebView Android WebView on iOS Bun Deno Node.js
@@species
51
13
48
38
10
51
48
41
10
5.0
51
10
1.0.0
1.0
6.5.0

Смотрите также

  • ArrayBuffer
  • Symbol.species

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer/Symbol.species

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API