存取未類型 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_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 值反射和內省功能列表。