1.属性的简洁表达法
var foo = '123'
//ES5
var obj = {
foo : foo,
getMsg : function (){
console.log(this.foo,this.name,this.age)
}
}
//ES6
var obj = {
foo,
getMsg (){
console.log(this.foo,this.name,this.age)
}
}
2.属性名表达式
//ES5
var obj= {}
obj.name = 'kiwi' ;
obj['a' + 'ge' ] = 27;
//ES6
var name = 'name' ;
var age = 'age' ;
var obj = {
[name] : 'kiwi' ,
[age] : 27
}
3.属性的可枚举性
var obj = {
name : 'kiwi' ,
age : 27
}
console.log(Object.getOwnPropertyDescriptor(obj, 'name' ))
//enumerable : true
console.log(Object.getOwnPropertyDescriptor(Object.prototype, 'toString' ))
//enumerable : false
4.新的API
Object.is()
Object.is()和 === 绝大多数是一样的,是 === 的升级版。
console.log(Object.is('foo' ,'foo' ))//true
console.log(Object.is(NaN,NaN))//true
console.log(NaN === NaN);//false
console.log(Object.is(+0, -0))//false
console.log(+0 === -0);//true
Object.assign()
Object.assign() 用来将多个原对象的可枚举属性复制到目标对象当中。
var obj = {}
var obj1 = {name : 'kiwi' }
var obj2 = {age : 27}
var newObj = Object.assign(obj, obj1, obj2);
//obj -> {name : 'kiwi' , age : 27}
//newObj -> {name : 'kiwi' , age : 27}
隐式转换,将数据值转为对象后再赋值(null undefined不行)
var newObj1 = Object.assign(2);
//number{2}
var newObj2 = Object.assign('123' );
//string{"123" }
应用:添加方法和属性
var obj = {}
var obj1 = {name : 'kiwi' , age : 27}
var obj2 = {getName (){console.log('jch' )}}
var newObj = Object.assign(obj,obj1,obj2);
console.log(newObj)
//{name: "kiwi" , age: 27, getName: ƒ}
Object.keys()、Object.values()、Object.entries()
都是返回数组,且成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性。Object.keys()是键名,Object.values()是键值Object.entries()是键值对数组
var obj = [2, 4, 6]
var keys = Object.keys(Obj)
//["0" , "1" , "2" ]
var values = Object.values(Obj)
//[2, 4, 6] chrom不支持
var entries = Object.entries(Obj)
//["0" :2, "1" :4, "2" :6]
Object.entries()应用:1)遍历对象的属性
let obj = { sasa : 'fish' , kiwi : 'dog' };
for (let [key, value] of Object.entries(obj)) {
console.log(
`My name is ${key} ,I like ${value} .`
);
}
//My name is sasa,I like fish
a.html:31 My name is kiwi,I like dog
Object.entries()应用:2)将对象转为真正的 Map 结构
const obj = { name: 'kiwi' , age: 27 };
const map = new Map(Object.entries(obj));
console.log(map );
// Map{"name" => "kiwi" , "age" => 27}