访问无类型 JavaScript 值的属性

要读取和写入任何无类型 JavaScript 值的任意属性,无论它是否是某个 JavaScript 类的 `instanceof`,请使用 `js_sys::Reflect` API。这些 API 是对 JavaScript 内置 `Reflect` 对象 及其方法的绑定。

您可能还会从 使用鸭子类型接口 中获益,而不是使用无类型值。

使用 `js_sys::Reflect::get` 读取属性

`js_sys::Reflect::get` 的 API 文档。

返回属性值的函数。

Rust 用法

#![allow(unused)]
fn main() {
let value = js_sys::Reflect::get(&target, &property_key)?;
}

JavaScript 等效代码

let value = target[property_key];

使用 `js_sys::Reflect::set` 写入属性

`js_sys::Reflect::set` 的 API 文档。

将值分配给属性的函数。返回一个布尔值,如果更新成功则为 true。

Rust 用法

#![allow(unused)]
fn main() {
js_sys::Reflect::set(&target, &property_key, &value)?;
}

JavaScript 等效代码

target[property_key] = value;

使用 `js_sys::Reflect::has` 判断属性是否存在

`js_sys::Reflect::has` 的 API 文档。

JavaScript `in` 运算符的函数形式。返回一个布尔值,指示目标上是否存在自己的属性或继承的属性。

Rust 用法

#![allow(unused)]
fn main() {
if js_sys::Reflect::has(&target, &property_key)? {
    // ...
} else {
    // ...
}
}

JavaScript 等效代码

if (property_key in target) {
    // ...
} else {
    // ...
}

等等,还有更多!

请参阅 `js_sys::Reflect` API 文档,了解 JavaScript 值反射和自省功能的完整列表。