类型化数组(TypedArrayOf)
Napi::TypedArrayOf<T> 类继承自 Napi::TypedArray 类。
Napi::TypedArrayOf 类对应 JavaScript 中的各类 TypedArray 类。
类型定义(Typedefs)
常用的 JavaScript 类型化数组类型已预先定义,可直接使用:
cpp
using Int8Array = Napi::TypedArrayOf<int8_t>;
using Uint8Array = Napi::TypedArrayOf<uint8_t>;
using Int16Array = Napi::TypedArrayOf<int16_t>;
using Uint16Array = Napi::TypedArrayOf<uint16_t>;
using Int32Array = Napi::TypedArrayOf<int32_t>;
using Uint32Array = Napi::TypedArrayOf<uint32_t>;
using Float32Array = Napi::TypedArrayOf<float>;
using Float64Array = Napi::TypedArrayOf<double>;
唯一的例外是 Uint8ClampedArray,它需要显式初始化:
cpp
Uint8Array::New(env, length, napi_uint8_clamped_array)
注意:尽管可以创建 "受限(clamped)" 数组,但这种受限行为仅在 JavaScript 层面生效。
方法(Methods)
New(分配新实例)
分配一个指定元素长度的新 Napi::TypedArray 实例。底层的 Napi::ArrayBuffer 会自动分配足够的空间以容纳指定数量的元素。
数组类型参数通常可省略(因为会从模板参数 T 推导),仅在创建 "受限(clamped)" 数组时需要显式指定。
cpp
static Napi::TypedArrayOf Napi::TypedArrayOf::New(napi_env env,
size_t elementLength,
napi_typedarray_type type);
[in] env:用于创建Napi::TypedArrayOf实例的运行环境。[in] elementLength:要分配的数组长度(单位:元素)。[in] type:要分配的数组类型(可选)。
返回新的 Napi::TypedArrayOf 实例。
New(包装现有 ArrayBuffer)
将传入的 Napi::ArrayBuffer 包装为一个新的 Napi::TypedArray 实例。
数组类型参数通常可省略(因为会从模板参数 T 推导),仅在创建 "受限(clamped)" 数组时需要显式指定。
cpp
static Napi::TypedArrayOf Napi::TypedArrayOf::New(napi_env env,
size_t elementLength,
Napi::ArrayBuffer arrayBuffer,
size_t bufferOffset,
napi_typedarray_type type);
[in] env:用于创建Napi::TypedArrayOf实例的运行环境。[in] elementLength:数组的长度(单位:元素)。[in] arrayBuffer:作为底层存储的Napi::ArrayBuffer实例。[in] bufferOffset:该数组在底层Napi::ArrayBuffer中的起始偏移量(单位:字节)。[in] type:要分配的数组类型(可选)。
返回新的 Napi::TypedArrayOf 实例。
构造函数(Constructor)
空构造函数
初始化一个空的 Napi::TypedArrayOf 类实例。
cpp
Napi::TypedArrayOf::TypedArrayOf();
包装现有对象的构造函数
初始化一个用于包装现有 Napi::TypedArrayOf 对象的包装器实例。
cpp
Napi::TypedArrayOf::TypedArrayOf(napi_env env, napi_value value);
[in] env:用于创建Napi::TypedArrayOf对象的运行环境。[in] value:要包装的Napi::TypedArrayOf引用(底层为 Node-API 原始值)。
operator [](非 const 版本)
cpp
T& Napi::TypedArrayOf::operator [](size_t index);
[in] index:数组中的元素索引。
返回指定索引位置的元素(非 const 引用)。
operator [](const 版本)
cpp
const T& Napi::TypedArrayOf::operator [](size_t index) const;
[in] index:数组中的元素索引。
返回指定索引位置的元素(const 引用)。
Data(非 const 版本)
cpp
T* Napi::TypedArrayOf::Data() const;
返回指向底层 Napi::ArrayBuffer 的指针,该指针已偏移至数组的起始位置。
Data(const 版本)
cpp
const T* Napi::TypedArrayOf::Data() const
返回指向底层 Napi::ArrayBuffer 的 const 指针,该指针已偏移至数组的起始位置。