ES6学习——新加API:Object

来源:互联网 发布:vb if else语句 编辑:程序博客网 时间:2024/05/22 22:57

这篇看看Object对象新添加的一些API。

1)Object.is ( value1, value2 )

使用===判断两个value是否相等,两个例外,NaN等于NaN,-0不等于+0。

var x = NaN, y = 0, z = -0;x === x; // falsey === z; // trueObject.is( x, x ); // trueObject.is( y, z ); // false

2)Object.getOwnPropertySymbols( O )

返回对象Symbol类型的key。

3)Object.setPrototypeOf ( O, proto )

设置对象的隐式原型。

var o1 = {    foo() { console.log( "foo" ); }};var o2 = {};Object.setPrototypeOf( o2, o1 );o2.foo(); // foovar o1 = {    foo() { console.log( "foo" ); }};var o2 = Object.setPrototypeOf( {}, o1 );o2.foo();

4)Object.assign ( target, ...sources )

对象的浅拷贝,把sources对象的内容拷贝到target,忽略Symbol类型的key,不能枚举的key,父对象中的key

var target = {},o1 = { a: 1 }, o2 = { b: 2 },o3 = { c: 3 }, o4 = { d: 4 };Object.defineProperty( o3, "e", {value: 5,enumerable: true,writable: false,configurable: false} );Object.defineProperty( o3, "f", {value: 6,enumerable: false} );o3[ Symbol( "g" ) ] = 7;Object.setPrototypeOf( o3, o4 );Object.assign( target, o1, o2, o3 );target.a; // 1target.b; // 2target.c; // 3target.e; // 5Object.getOwnPropertyDescriptor( target, "e" );//Object {value: 5, writable: true, enumerable: true, configurable: true}

*以上全部代码在Chrome 48下通过测试

0 0
原创粉丝点击