ES6新增Object API

111 阅读1分钟

一、Object.is()

判断两个数据是否相等,基本上和严格相等是一样的,除了一下两点:

NaN 和 NaN       true

+0 和 -0              false

二、Object.assign()   用于混合对象

用于两个对象的混合

const obj1 = {name: "周智虎",age: 22}

const obj2 = {address: "陕西"}

Object.assign(obj1, obj2)    

此时会对obj1也会有变动,所以最好是这样 Object.assign({}, obj1, obj2)  这种情况下就不会改变obj1了

三、Object.getOwnPropertyNames()  获取对象的属性放在数组中

const obj = {name: "周智虎", age: 22}

Object.getOwnPropertyNames(obj)     返回结果是["name", "age"]

四、Object.setPrototypeOf()  修改对象的隐式属性

const obj1 = {} 

const obj2 = {name: "周智虎",age: 22}

Object.setPrototypeOf(obj, obj2);

此时若访问obj1.name;  返回的结果是  "周智虎"  而不是undefined

原理就和obj1.proto = obj2

五、获取对象的符号属性 Object.getOwnPropertySymbols()

const syb = Symbol();

cosnt obj = {name: "周智虎", age: 22, [syb]: "好好学习"}

for(prop in obj){console.log(prop)}   //"name"    "age"

Object.keys(obj)    //["name", "age"]

Object.getOwnPropertyNames(obj) //["name", "age"]

const res = Object.getOwnPropertySymbols(obj)  //[Symbol()]此时的

res[0] = syb;   //返回结果为true