mirror of
https://github.com/fluencelabs/wasm-bindgen
synced 2025-03-16 18:20:51 +00:00
Merge pull request #854 from brisad/object-bindings
Add the last four bindings for Object
This commit is contained in:
commit
b36708fd85
@ -2014,6 +2014,16 @@ extern "C" {
|
||||
#[wasm_bindgen(static_method_of = Object, js_name = defineProperties)]
|
||||
pub fn define_properties(obj: &Object, props: &Object) -> Object;
|
||||
|
||||
/// The Object.entries() method returns an array of a given
|
||||
/// object's own enumerable property [key, value] pairs, in the
|
||||
/// same order as that provided by a for...in loop (the difference
|
||||
/// being that a for-in loop enumerates properties in the
|
||||
/// prototype chain as well).
|
||||
///
|
||||
/// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries)
|
||||
#[wasm_bindgen(static_method_of = Object)]
|
||||
pub fn entries(object: &Object) -> Array;
|
||||
|
||||
/// The `Object.freeze()` method freezes an object: that is, prevents new
|
||||
/// properties from being added to it; prevents existing properties from
|
||||
/// being removed; and prevents existing properties, or their enumerability,
|
||||
@ -2040,6 +2050,29 @@ extern "C" {
|
||||
#[wasm_bindgen(static_method_of = Object, js_name = getOwnPropertyDescriptors)]
|
||||
pub fn get_own_property_descriptors(obj: &Object) -> JsValue;
|
||||
|
||||
/// The Object.getOwnPropertyNames() method returns an array of
|
||||
/// all properties (including non-enumerable properties except for
|
||||
/// those which use Symbol) found directly upon a given object.
|
||||
///
|
||||
/// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames)
|
||||
#[wasm_bindgen(static_method_of = Object, js_name = getOwnPropertyNames)]
|
||||
pub fn get_own_property_names(obj: &Object) -> Array;
|
||||
|
||||
/// The Object.getOwnPropertySymbols() method returns an array of
|
||||
/// all symbol properties found directly upon a given object.
|
||||
///
|
||||
/// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertySymbols)
|
||||
#[wasm_bindgen(static_method_of = Object, js_name = getOwnPropertySymbols)]
|
||||
pub fn get_own_property_symbols(obj: &Object) -> Array;
|
||||
|
||||
/// The Object.getPrototypeOf() method returns the prototype
|
||||
/// (i.e. the value of the internal [[Prototype]] property) of the
|
||||
/// specified object.
|
||||
///
|
||||
/// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getPrototypeOf)
|
||||
#[wasm_bindgen(static_method_of = Object, js_name = getPrototypeOf)]
|
||||
pub fn get_prototype_of(obj: &JsValue) -> Object;
|
||||
|
||||
/// The `hasOwnProperty()` method returns a boolean indicating whether the
|
||||
/// object has the specified property as its own property (as opposed to
|
||||
/// inheriting it).
|
||||
|
@ -10,6 +10,11 @@ extern "C" {
|
||||
#[wasm_bindgen(method, setter, structural)]
|
||||
fn set_foo(this: &Foo42, val: JsValue);
|
||||
|
||||
#[wasm_bindgen(js_name = prototype, js_namespace = Object)]
|
||||
static OBJECT_PROTOTYPE: JsValue;
|
||||
#[wasm_bindgen(js_name = prototype, js_namespace = Array)]
|
||||
static ARRAY_PROTOTYPE: JsValue;
|
||||
|
||||
type DefinePropertyAttrs;
|
||||
#[wasm_bindgen(method, setter, structural)]
|
||||
fn set_value(this: &DefinePropertyAttrs, val: &JsValue);
|
||||
@ -105,6 +110,19 @@ fn define_properties() {
|
||||
assert!(foo.has_own_property(&"car".into()));
|
||||
}
|
||||
|
||||
#[wasm_bindgen_test]
|
||||
fn entries() {
|
||||
let entries = Object::entries(&foo_42());
|
||||
assert_eq!(entries.length(), 1);
|
||||
entries.for_each(&mut |x, _, _| {
|
||||
assert!(x.is_object());
|
||||
let array: Array = x.into();
|
||||
assert_eq!(array.shift(), "foo");
|
||||
assert_eq!(array.shift(), 42);
|
||||
assert_eq!(array.length(), 0);
|
||||
});
|
||||
}
|
||||
|
||||
#[wasm_bindgen_test]
|
||||
fn get_own_property_descriptor() {
|
||||
let foo = foo_42();
|
||||
@ -122,6 +140,29 @@ fn get_own_property_descriptors() {
|
||||
assert_eq!(PropertyDescriptor::from(foo_desc).value(), 42);
|
||||
}
|
||||
|
||||
#[wasm_bindgen_test]
|
||||
fn get_own_property_names() {
|
||||
let names = Object::get_own_property_names(&foo_42());
|
||||
assert_eq!(names.length(), 1);
|
||||
names.for_each(&mut |x, _, _| {
|
||||
assert_eq!(x, "foo");
|
||||
});
|
||||
}
|
||||
|
||||
#[wasm_bindgen_test]
|
||||
fn get_own_property_symbols() {
|
||||
let symbols = Object::get_own_property_symbols(&map_with_symbol_key());
|
||||
assert_eq!(symbols.length(), 1);
|
||||
}
|
||||
|
||||
#[wasm_bindgen_test]
|
||||
fn get_prototype_of() {
|
||||
let proto = JsValue::from(Object::get_prototype_of(&Object::new().into()));
|
||||
assert_eq!(proto, *OBJECT_PROTOTYPE);
|
||||
let proto = JsValue::from(Object::get_prototype_of(&Array::new().into()));
|
||||
assert_eq!(proto, *ARRAY_PROTOTYPE);
|
||||
}
|
||||
|
||||
#[wasm_bindgen_test]
|
||||
fn has_own_property() {
|
||||
assert!(foo_42().has_own_property(&"foo".into()));
|
||||
|
Loading…
x
Reference in New Issue
Block a user