ES6中对于Object的拓展主要是静态方法的拓展.
目录
②Object.assign(o,obj,obj1); 合并对象
3. Object.setPrototypeOf() 设置原型对象中的方法
4. Object.getPrototypeOf(obj) 获取原型对象中的方法
5.Object.keys() Object.values() Object.entries()
1.Object.is(a,b); 判断a和b的值是否相等
这个方法和js的严格判断(===)用法基本一致,只是在对于 -0 和 +0 以及NaN的判断上做了改善
console.log(1===1);//true
console.log(Object.is(1,1));//true
console.log(Object.is(1,2));//false
console.log(+0===-0)//true
console.log(Object.is(+0,-0));//false
console.log(NaN===NaN);//false
console.log(Object.is(NaN,NaN));//true
2.Object.assign();
①对象的深拷贝 Object.assign(o,obj)
let o={};
let obj={
name:"zhangsan",
age:12
}
let result=Object.assign(o,obj); 把obj中的内容复制到o对象当中并返回o对象
console.log(o) //{ name: 'zhangsan', age: 12 }
console.log(result); //{ name: 'zhangsan', age: 12 }
console.log(o === result) //true
②Object.assign(o,obj,obj1); 合并对象
三个参数代表的是合并对象obj,obj1到o当中并返回o对象
let o={}
let obj={
name:"zhangsan",
age:12
}
let obj1={
name:"lisi",
gender:1
}
let result=Object.assign(o,obj,obj1); //若obj2、obj3中有相同属性,则后面的覆盖前面的
console.log(o); //{ name: 'lisi', age: 12, gender: 1 }
console.log(result); //{ name: 'lisi', age: 12, gender: 1 }
3. Object.setPrototypeOf() 设置原型对象中的方法
Object.setPrototypeOf(obj1,obj2) 为目标对象设置原型,将obj2设置成obj1的原型
let obj1 = {}
let obj2 = {
age:12,
name:'zhangsan'
}
Object.setPrototypeOf(obj1,obj2)
console.log(obj1.__proto__); //{ age: 12, name: 'zhangsan' } 直接访问prototype
或 console.log(Object.getPrototypeOf(obj1)); //{ age: 12, name: 'zhangsan' }
4. Object.getPrototypeOf(obj) 获取原型对象中的方法
let obj={
name:"",
age:1
}
console.log(obj.__proto__);
console.log(obj.constructor.prototype)
console.log(Object.getPrototypeOf(obj))
5.Object.keys() Object.values() Object.entries()
let obj={
name:'terry',
age:12
}
// 获取所有属性名组成的数组
console.log(Object.keys(obj)); //[ 'name', 'age' ]
// 获取所有属性值组成的数组
console.log(Object.values(obj)); //[ 'terry', 12 ]
// 获取键值对组成的数组
console.log(Object.entries(obj)); //[ [ 'name', 'terry' ], [ 'age', 12 ] ]