mirror of
https://github.com/fluencelabs/wasm-bindgen
synced 2025-05-12 13:57:14 +00:00
Add binding for Object.defineProperty()
This commit is contained in:
parent
1d2d397f55
commit
fe6ad5447e
@ -1996,6 +1996,14 @@ extern "C" {
|
|||||||
#[wasm_bindgen(static_method_of = Object)]
|
#[wasm_bindgen(static_method_of = Object)]
|
||||||
pub fn create(prototype: &Object) -> Object;
|
pub fn create(prototype: &Object) -> Object;
|
||||||
|
|
||||||
|
/// The static method Object.defineProperty() defines a new
|
||||||
|
/// property directly on an object, or modifies an existing
|
||||||
|
/// property on an object, and returns the object.
|
||||||
|
///
|
||||||
|
/// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty)
|
||||||
|
#[wasm_bindgen(static_method_of = Object, js_name = defineProperty)]
|
||||||
|
pub fn define_property(obj: &Object, prop: &JsValue, descriptor: &Object) -> Object;
|
||||||
|
|
||||||
/// The `Object.freeze()` method freezes an object: that is, prevents new
|
/// The `Object.freeze()` method freezes an object: that is, prevents new
|
||||||
/// properties from being added to it; prevents existing properties from
|
/// properties from being added to it; prevents existing properties from
|
||||||
/// being removed; and prevents existing properties, or their enumerability,
|
/// being removed; and prevents existing properties, or their enumerability,
|
||||||
|
@ -9,6 +9,10 @@ extern "C" {
|
|||||||
type Foo42;
|
type Foo42;
|
||||||
#[wasm_bindgen(method, setter, structural)]
|
#[wasm_bindgen(method, setter, structural)]
|
||||||
fn set_foo(this: &Foo42, val: JsValue);
|
fn set_foo(this: &Foo42, val: JsValue);
|
||||||
|
|
||||||
|
type DefinePropertyAttrs;
|
||||||
|
#[wasm_bindgen(method, setter, structural)]
|
||||||
|
fn set_value(this: &DefinePropertyAttrs, val: &JsValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[wasm_bindgen(module = "tests/wasm/Object.js")]
|
#[wasm_bindgen(module = "tests/wasm/Object.js")]
|
||||||
@ -73,6 +77,16 @@ fn create() {
|
|||||||
assert!(my_array.is_instance_of::<Array>());
|
assert!(my_array.is_instance_of::<Array>());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[wasm_bindgen_test]
|
||||||
|
fn define_property() {
|
||||||
|
let value = DefinePropertyAttrs::from(JsValue::from(Object::new()));
|
||||||
|
value.set_value(&43.into());
|
||||||
|
let descriptor = Object::from(JsValue::from(value));
|
||||||
|
let foo = foo_42();
|
||||||
|
let foo = Object::define_property(&foo, &"bar".into(), &descriptor);
|
||||||
|
assert!(foo.has_own_property(&"bar".into()));
|
||||||
|
}
|
||||||
|
|
||||||
#[wasm_bindgen_test]
|
#[wasm_bindgen_test]
|
||||||
fn has_own_property() {
|
fn has_own_property() {
|
||||||
assert!(foo_42().has_own_property(&"foo".into()));
|
assert!(foo_42().has_own_property(&"foo".into()));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user