1.简洁表示法
{ let o=1;
let k=2;
let es5={ o:o, k:k };
let es6={ o, k };
console.log(es5,es6);
}
es6比es5表示要简洁一些
方法的简洁表达
let es5_method={
hello:function()
{ console.log('hello'); }
};
let es6_method={
hello()
{ console.log('world'); }
}
console.log(es5_method.hello(),es6_method.hello());
2.属性表达式
{ let a='b';
let es5_obj={ a:'c', b:'c' };
let es6_obj={ [a]:'c' }
console.log(es5_obj,es6_obj);
}
在es5中,a的值没有改变,在es6中,a的值在之前赋值时就已经改变了,这种方便对象名因为另一个值做变换,可以实现变量的依赖
3.新怎API
判断字符串是否相等
{ console.log('字符串',Object.is('abc','abc'),'abc'==='abc');
console.log('数组',Object.is([],[]),[]===[]); }
这里object.is()其实是等价于===的,而第二个数组虽然值都是空的,但是数组返回的是数组的地址,两个地址是不一样的,所以是false
拷贝
console.log('拷贝',Object.assign({a:'a'},{b:'b'}));
这个API将前后的对象合并成了一个对象,而且是一个前拷贝,这个API不能做后拷贝,如果这个对象还有继承,这个API是不会拷贝继承的,也不可拷贝对象中不可枚举的属性
entries
let test={k:123,o:456};
for(let [key,value] of Object.entries(test))
{ console.log("qq",[key,value]); }
这个可以取得对象里面的值
扩展运算符
let {A,B,...C}={a:'test',b:'kill',c:'ddd',d:'sss'}
其中C={
c:'ddd',
d:'sss'
}