implements Object.values() binding

This commit is contained in:
belfz 2018-07-01 23:50:10 +02:00
parent bfffd58683
commit 1d04203e89
2 changed files with 38 additions and 0 deletions

View File

@ -832,6 +832,15 @@ extern "C" {
/// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/valueOf
#[wasm_bindgen(method, js_name = valueOf)]
pub fn value_of(this: &Object) -> Object;
/// The Object.values() method returns an array of a given object's
/// own enumerable property values, 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).
///
/// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/values
#[wasm_bindgen(static_method_of = Object)]
pub fn values(object: &Object) -> Array;
}
// Set

View File

@ -368,3 +368,32 @@ fn value_of() {
)
.test()
}
#[test]
fn values() {
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 values(obj: &js::Object) -> js::Array {
js::Object::values(&obj)
}
"#)
.file("test.ts", r#"
import * as assert from "assert";
import * as wasm from "./out";
export function test() {
const object = { foo: 'bar', baz: 'qux' };
const values = wasm.values(object);
assert.equal(values.length, 2);
assert.deepEqual(values.sort(), ['bar', 'qux']);
}
"#)
.test()
}