存取未定型別的 JavaScript 值屬性

若要從任何未定型別的 JavaScript 值讀取和寫入任意屬性,無論它是否為某個 JavaScript 類別的 instanceof,請使用js_sys::Reflect API。這些 API 是對 JavaScript 內建 Reflect 物件及其方法的繫結。

您可能也會從使用 Duck-Typed 介面而非使用未定型別的值中受益。

使用 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 值反射和內省功能列表。