一、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