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