mirror of
https://github.com/fluencelabs/wasm-bindgen
synced 2025-07-31 03:51:56 +00:00
Merge pull request #838 from brisad/object-get-descriptors
Object get descriptors
This commit is contained in:
@@ -2022,6 +2022,22 @@ extern "C" {
|
||||
#[wasm_bindgen(static_method_of = Object)]
|
||||
pub fn freeze(value: &Object) -> Object;
|
||||
|
||||
/// The Object.getOwnPropertyDescriptor() method returns a
|
||||
/// property descriptor for an own property (that is, one directly
|
||||
/// present on an object and not in the object's prototype chain)
|
||||
/// of a given object.
|
||||
///
|
||||
/// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor)
|
||||
#[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).
|
||||
|
@@ -13,6 +13,10 @@ extern "C" {
|
||||
type DefinePropertyAttrs;
|
||||
#[wasm_bindgen(method, setter, structural)]
|
||||
fn set_value(this: &DefinePropertyAttrs, val: &JsValue);
|
||||
|
||||
type PropertyDescriptor;
|
||||
#[wasm_bindgen(method, getter, structural)]
|
||||
fn value(this: &PropertyDescriptor) -> JsValue;
|
||||
}
|
||||
|
||||
#[wasm_bindgen(module = "tests/wasm/Object.js")]
|
||||
@@ -101,6 +105,23 @@ fn define_properties() {
|
||||
assert!(foo.has_own_property(&"car".into()));
|
||||
}
|
||||
|
||||
#[wasm_bindgen_test]
|
||||
fn get_own_property_descriptor() {
|
||||
let foo = foo_42();
|
||||
let desc = Object::get_own_property_descriptor(&foo, &"foo".into());
|
||||
assert_eq!(PropertyDescriptor::from(desc).value(), 42);
|
||||
let desc = Object::get_own_property_descriptor(&foo, &"bar".into());
|
||||
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()));
|
||||
|
Reference in New Issue
Block a user