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