函数新增特性
- 简洁表示法
- 属性表达式
- 扩展运算符
- Object新增方法
简介表示法
属性简写
{
// 简洁表示法
let o=1;
let k=2;
let es5={
o:o,
k:k
};
let es6={
o, // 属性简写
k
};
console.log(es5,es6); // {o: 1, k: 2} {o: 1, k: 2}
}
方法简写
{
let es5_method={
hello:function(){
console.log('hello');
}
};
let es6_method={
hello(){ // 方法简写
console.log('hello');
}
};
console.log(es5_method.hello(),es6_method.hello()); // hello hello
}
属性表达式
{
let a='b';
let es5_obj={
a:'c',
b:'c'
};
let es6_obj={
[a]:'c' // key 值,可以是表达式或变量
}
console.log(es5_obj,es6_obj); // {a: "c", b: "c"} {b: "c"}
}
扩展运算符
babel 支持不友好,暂时没法用
{
let {a,b,...c}={a:'test',b:'kill',c:'ddd',d:'ccc'};
c={ // c 的解析结果
c:'ddd',
d:'ccc'
}
}
Object新增方法
判断是否相等
Object.is()
与 === 一样
{
console.log('字符串',Object.is('abc','abc'),'abc'==='abc'); // true true,
console.log('数组',Object.is([],[]),[]===[]); // false false,引用地址不同
}
拷贝
Object.assign(target, ...sources)
,对象拷贝
注意:
- 拷贝属性有限制,浅拷贝
- 拷贝的只有自身对象的属性,不拷贝不可枚举的属性
{
console.log('拷贝',Object.assign({a:'a'},{b:'b'})); // {a: "a", b: "b"}
}
遍历
Object.entries()
配合遍历使用
{
// Object.entries() 配合遍历使用
let test={k:123,o:456};
for(let [key,value] of Object.entries(test)){
console.log([key,value]); // ["k", 123] ["o", 456]
}
}