访问未类型化 JavaScript 值的属性

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

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

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

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

一个返回属性值的函数。

Rust 用法


# #![allow(unused_variables)]
#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_variables)]
#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_variables)]
#fn main() {
if js_sys::Reflect::has(&target, &property_key)? {
    // ...
} else {
    // ...
}
#}

JavaScript 等效代码

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

但是,还有更多!

请参阅 js_sys::Reflect API 文档,获取完整的 JavaScript 值反射和内省功能列表。