From 2d91fa11b5e950da7523a0c96cd10367238cd94b Mon Sep 17 00:00:00 2001 From: Michael Hoffmann Date: Sun, 16 Sep 2018 23:02:46 +0200 Subject: [PATCH] Add binding for Object.getOwnPropertyDescriptors() --- crates/js-sys/src/lib.rs | 7 +++++++ crates/js-sys/tests/wasm/Object.rs | 8 ++++++++ 2 files changed, 15 insertions(+) diff --git a/crates/js-sys/src/lib.rs b/crates/js-sys/src/lib.rs index f074dd20..fd20899f 100644 --- a/crates/js-sys/src/lib.rs +++ b/crates/js-sys/src/lib.rs @@ -2031,6 +2031,13 @@ extern "C" { #[wasm_bindgen(static_method_of = Object, js_name = getOwnPropertyDescriptor)] pub fn get_own_property_descriptor(obj: &Object, prop: &JsValue) -> JsValue; + /// The Object.getOwnPropertyDescriptors() method returns all own + /// property descriptors of a given object. + /// + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptors) + #[wasm_bindgen(static_method_of = Object, js_name = getOwnPropertyDescriptors)] + pub fn get_own_property_descriptors(obj: &Object) -> JsValue; + /// The `hasOwnProperty()` method returns a boolean indicating whether the /// object has the specified property as its own property (as opposed to /// inheriting it). diff --git a/crates/js-sys/tests/wasm/Object.rs b/crates/js-sys/tests/wasm/Object.rs index de4dfffe..525bfab3 100644 --- a/crates/js-sys/tests/wasm/Object.rs +++ b/crates/js-sys/tests/wasm/Object.rs @@ -114,6 +114,14 @@ fn get_own_property_descriptor() { assert!(PropertyDescriptor::from(desc).value().is_undefined()); } +#[wasm_bindgen_test] +fn get_own_property_descriptors() { + let foo = foo_42(); + let descriptors = Object::get_own_property_descriptors(&foo); + let foo_desc = Reflect::get(&descriptors, &"foo".into()); + assert_eq!(PropertyDescriptor::from(foo_desc).value(), 42); +} + #[wasm_bindgen_test] fn has_own_property() { assert!(foo_42().has_own_property(&"foo".into()));