SharedArrayBuffer[Symbol.species]
Базовая поддержка Широко доступна
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и в различных версиях браузеров. Она доступна во всех браузерах с декабря 2021 года.
Статическое свойство доступа SharedArrayBuffer[Symbol.species] возвращает конструктор, используемый для создания возвращаемых значений из методов SharedArrayBuffer.
Предупреждение: Наличие [Symbol.species] позволяет выполнять произвольный код и может создавать уязвимости безопасности. Это также значительно затрудняет некоторые оптимизации. Разработчики движков исследуют возможность удаления этой функции. По возможности избегайте ее использования.
Синтаксис
SharedArrayBuffer[Symbol.species]
Возвращаемое значение
Значение конструктора (this), у которого был вызван get [Symbol.species]. Возвращаемое значение используется для создания возвращаемых значений из методов буфера массива, которые создают новый буфер массива.
Описание
Свойство доступа [Symbol.species] возвращает конструктор по умолчанию для объектов SharedArrayBuffer. Конструкторы подклассов могут переопределить его для изменения назначения конструктора. Реализация по умолчанию в основном выглядит так:
// Hypothetical underlying implementation for illustration
class SharedArrayBuffer {
static get [Symbol.species]() {
return this;
}
}
Благодаря этой полиморфной реализации, [Symbol.species] производных подклассов также по умолчанию будет возвращать сам конструктор.
class SubArrayBuffer extends SharedArrayBuffer {}
SubArrayBuffer[Symbol.species] === SubArrayBuffer; // true
При вызове методов буфера массива, которые не изменяют существующий массив, а возвращают новый экземпляр буфера массива (например, slice()), будет доступен constructor[Symbol.species] массива. Возвращаемый конструктор будет использоваться для создания возвращаемого значения метода буфера массива.
Примеры
Species в обычных объектах
Свойство [Symbol.species] возвращает функцию конструктора по умолчанию, которая является конструктором SharedArrayBuffer для SharedArrayBuffer.
SharedArrayBuffer[Symbol.species]; // function SharedArrayBuffer()
Species в производных объектах
В экземпляре пользовательского подкласса SharedArrayBuffer, такого как MySharedArrayBuffer, вид MySharedArrayBuffer — это конструктор MySharedArrayBuffer. Однако вы можете захотеть переопределить это, чтобы возвращать родительские объекты SharedArrayBuffer в методах вашего производного класса:
class MySharedArrayBuffer extends SharedArrayBuffer {
// Overwrite MySharedArrayBuffer species to the parent SharedArrayBuffer constructor
static get [Symbol.species]() {
return SharedArrayBuffer;
}
}
Спецификации
Совместимость с браузерами
| Настольные компьютеры | Мобильные | Сервер | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 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 |
68 |
79 |
79 |
55 |
15.2 |
89 |
79 |
79 |
15.2 |
15.0 |
Нет |
15.2 |
1.0.0 |
1.0 |
8.10.0 |
См. также
© 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/SharedArrayBuffer/Symbol.species