diff --git a/src/js.rs b/src/js.rs index 6aac7093..561451a0 100644 --- a/src/js.rs +++ b/src/js.rs @@ -98,6 +98,13 @@ extern { /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isPrototypeOf #[wasm_bindgen(method, js_name = isPrototypeOf)] pub fn is_prototype_of(this: &Object, value: &JsValue) -> bool; + + /// The propertyIsEnumerable() method returns a Boolean indicating + /// whether the specified property is enumerable. + /// + /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/propertyIsEnumerable + #[wasm_bindgen(method, js_name = propertyIsEnumerable)] + pub fn property_is_enumerable(this: &Object, property: &JsValue) -> bool; } // Array diff --git a/tests/all/js_globals/Object.rs b/tests/all/js_globals/Object.rs index 80ac388d..153cbd0a 100755 --- a/tests/all/js_globals/Object.rs +++ b/tests/all/js_globals/Object.rs @@ -118,3 +118,29 @@ fn is_prototype_of() { "#) .test() } + +#[test] +fn property_is_enumerable() { + project() + .file("src/lib.rs", r#" + #![feature(proc_macro, wasm_custom_section)] + + extern crate wasm_bindgen; + use wasm_bindgen::prelude::*; + use wasm_bindgen::js; + + #[wasm_bindgen] + pub fn property_is_enumerable(obj: &js::Object, property: &JsValue) -> bool { + obj.property_is_enumerable(&property) + } + "#) + .file("test.ts", r#" + import * as assert from "assert"; + import * as wasm from "./out"; + + export function test() { + assert(wasm.property_is_enumerable({ foo: 42 }, "foo")); + } + "#) + .test() +}