• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 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 BufferSharedArrayBuffer构造函数。

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


    Species in derived objects

    在自定义SharedArray Buffer子类的实例中,例如MySharedArray BufferMySharedArrayBufferspecies是mySharedArray Buffer构造函数。但是,为了在派生类方法中返回父级SharedArrayBuffer对象,您可能需要覆盖此对象:

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