Skip to content

Commit 191e7dc

Browse files
committed
Add binding for Object.defineProperties()
1 parent 8da2e4d commit 191e7dc

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

crates/js-sys/src/lib.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2004,6 +2004,14 @@ extern "C" {
20042004
#[wasm_bindgen(static_method_of = Object, js_name = defineProperty)]
20052005
pub fn define_property(obj: &Object, prop: &JsValue, descriptor: &Object) -> Object;
20062006

2007+
/// The Object.defineProperties() method defines new or modifies
2008+
/// existing properties directly on an object, returning the
2009+
/// object.
2010+
///
2011+
/// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperties)
2012+
#[wasm_bindgen(static_method_of = Object, js_name = defineProperties)]
2013+
pub fn define_properties(obj: &Object, props: &Object) -> Object;
2014+
20072015
/// The `Object.freeze()` method freezes an object: that is, prevents new
20082016
/// properties from being added to it; prevents existing properties from
20092017
/// being removed; and prevents existing properties, or their enumerability,

crates/js-sys/tests/wasm/Object.rs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,20 @@ fn define_property() {
8787
assert!(foo.has_own_property(&"bar".into()));
8888
}
8989

90+
#[wasm_bindgen_test]
91+
fn define_properties() {
92+
let props = Object::new();
93+
let descriptor = DefinePropertyAttrs::from(JsValue::from(Object::new()));
94+
descriptor.set_value(&42.into());
95+
let descriptor = JsValue::from(descriptor);
96+
Reflect::set(props.as_ref(), &JsValue::from("bar"), &descriptor);
97+
Reflect::set(props.as_ref(), &JsValue::from("car"), &descriptor);
98+
let foo = foo_42();
99+
let foo = Object::define_properties(&foo, &props);
100+
assert!(foo.has_own_property(&"bar".into()));
101+
assert!(foo.has_own_property(&"car".into()));
102+
}
103+
90104
#[wasm_bindgen_test]
91105
fn has_own_property() {
92106
assert!(foo_42().has_own_property(&"foo".into()));

0 commit comments

Comments
 (0)