访问未类型化 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 值反射和内省功能列表。