get SharedArrayBuffer[@@species]
SharedArrayBuffer[@@species]访问器属性返回用于从SharedArrayBuffer方法构造返回值的构造函数。
警告:@@species的存在允许执行任意代码,并可能会造成安全漏洞。这也使得某些优化变得更加困难。引擎实现者正在调查是否删除此功能。尽可能避免依赖它。Syntax
SharedArrayBuffer[Symbol.species]
返回值:调用了get@@species的构造函数(this)的值。返回值用于从创建新数组缓冲区的数组缓冲区方法构造返回值。
描述
@@species访问器属性返回SharedArray Buffer对象的默认构造函数。子类构造函数可以重写它以更改构造函数赋值。默认实现基本上是:
// Hypothetical underlying implementation for illustration
class SharedArrayBuffer {
  static get [Symbol.species]() {
    return this;
  }
}
由于这种多态实现,派生子类的@@species默认情况下也会返回构造函数本身。
class SubArrayBuffer extends SharedArrayBuffer {}
SubArrayBuffer[Symbol.species] === SharedArrayBuffer; // true
当调用不改变现有数组但返回新数组缓冲区实例的数组缓冲区方法(例如,slice())时,将访问数组的构造函数[@@species]。返回的构造函数将用于构造数组缓冲区方法的返回值。
实例
Species in ordinary objects
@@species属性返回默认构造函数函数,该函数是SharedArray Buffer的SharedArrayBuffer构造函数。
SharedArrayBuffer[Symbol.species]; // function SharedArrayBuffer()
Species in derived objects
在自定义SharedArray Buffer子类的实例中,例如MySharedArray Buffer,MySharedArrayBufferspecies是mySharedArray Buffer构造函数。但是,为了在派生类方法中返回父级SharedArrayBuffer对象,您可能需要覆盖此对象:
class MySharedArrayBuffer extends SharedArrayBuffer {
  // Overwrite MySharedArrayBuffer species to the parent SharedArrayBuffer constructor
  static get [Symbol.species]() {
    return SharedArrayBuffer;
  }
}
