1.ES6 反引号
第一个用途, 基本的字符串格式化. 将表达式嵌入字符串中进行拼接. 用 ${}来界定.
第二个用途, 在 ES5 时我们通过反斜杠 () 来做多行字符串或者字符串一行行拼接. ES6 反引号 (``) 直接搞定.
ES6 对象提供了 Object.assign()这个方法来实现浅复制.
Object.assign() 可以把任意多个源对象自身可枚举的属性拷贝给目标对象, 然后返回目标对象. 第一参数即为目标对象. 在实际项目中, 我们为了不改变源对象. 一般会把目标对象传为{}
- const objA = { name: 'cc', age: 18 }
- const objB = { address: 'beijing' }
- const objC = {} // 这个为目标对象
- const obj = Object.assign(objC, objA, objB)// 我们将 objA objB objC obj 分别输出看看
- console.log(objA) // { name: 'cc', age: 18 }
- console.log(objB) // { address: 'beijing' }
- console.log(objC) // { name: 'cc', age: 18, address: 'beijing' }
- console.log(obj) // { name: 'cc', age: 18, address: 'beijing' } // 是的, 目标对象 ObjC 的值被改变了. // so, 如果 objC 也是你的一个源对象的话. 请在 objC 前面填在一个目标对象{}
- Object.assign({}, objC, objA, objB)
3.Spread Operator 展开运算符
ES6 中另外一个好玩的特性就是 Spread Operator 也是三个点儿... 接下来就展示一下它的用途.
组装对象或者数组
- // 数组
- const color = ['red', 'yellow']
- const colorful = [...color, 'green', 'pink']
- console.log(colorful) //[red, yellow, green, pink]
- // 对象
- const alp = { fist: 'a', second: 'b'}
- const alphabets = { ...alp, third: 'c' }
- console.log(alphabets) //{ "fist": "a", "second": "b", "third": "c"}
有时候我们想获取数组或者对象除了前几项或者除了某几项的其他项
- // 数组
- const number = [1,2,3,4,5]
- const [first, ...rest] = number
- console.log(rest) //2,3,4,5
- // 对象
- const user = {
- username: 'lux',
- gender: 'female',
- age: 19,
- address: 'peking'
- }
- const { username, ...rest } = user
- console.log(rest) //{"address": "peking", "age": 19, "gender": "female"}
对于 Object 而言, 还可以用于组合成新的 Object .(ES2017 stage-2 proposal) 当然如果有重复的属性名, 右边覆盖左边
- const first = {
- a: 5,
- b: 4,
- c: 6,
- }
- const second = {
- c: 3,
- d: 4
- }
- const total = { ...first, ...second }
- console.log(total) // { a: 5, b: 4, c: 3, d: 4 }
来源: http://www.qdfuns.com/article/49499/50d2cbc7d2c46129bfd373e448297058.html