1. 程式人生 > 其它 >ES6的小知識

ES6的小知識

1:函式的預設引數

 1 function foo(x = 20, y = 30) {
 2     console.log(x, y);
 3 }
 4 foo(50)
 5 foo(undefined, '') //解決了之前的弊端
 6     //預設值和解構結合
 7 function bar({ name, age } = { name: 'tyy', age: 20 }) {
 8     console.log(name, age);
 9 }
10 
11 function bar2({ m = 'tyy', n = 20 } = { m, n }) {
12     console.log(m, n);
13 } 14 bar() 15 bar2()

 

 2:函式的剩餘引數 ...args 和arguments不同的是arguments是所有的引數

 

1 function foo(m, n, ...args) {
2     console.log(m, n, args);
3 }
4 foo(1, 2, 3, 4, 5, 6, 7)

 

 3:函式箭頭函式

箭頭函式上面沒有prototype,所以不能作為建構函式使用new來創造物件

1 var foo = () => {
2     console.log(this);
3 }
4 console.log(foo.prototype);
5 var f = new foo()

 

 4:展開語法

 1 var names = ['tyy', 'tsf', 'zjj']
 2 var name = 'hei'
 3 var obj = { mood: 'happy', age: 20 }
 4     //1函式呼叫時    
 5 function foo(x, y, z) {
 6     console.log(x, y, z);
 7 }
 8 foo(...names)
 9 foo(...name)
10     //構造陣列時
11 const newArr = [...name, ...names]
12 console.log(newArr);
13 //建立字面量物件時 會自動給陣列新增索引 14 var newobj = {...obj, address: '廣州市', ...names } 15 console.log(newobj);

 

 5:Symbol的使用---用來生成一個獨一無二的值

 1 const s1 = Symbol()
 2 const s2 = Symbol()
 3 const s3 = Symbol()
 4 const s4 = Symbol()
 5 const s5 = Symbol()
 6 const obj = {}
 7     //寫法一屬性名賦值
 8 obj[s1] = 'abc'
 9 obj[s2] = 'cba'
10 console.log(obj);
11 //寫法二 
12 Object.defineProperty(obj, s3, {
13         value: 'qwe',
14         enumerable: true
15     })
16     //寫法三 定義字面量直接使用
17 const info = {
18     [s4]: 'iop',
19     [s5]: 'wer'
20 }
21 console.log(obj);
22 console.log(Object.getOwnPropertySymbols(info));
23 const Symbolkeys = Object.getOwnPropertySymbols(info)
24 for (const key of Symbolkeys) {
25     console.log(info[key]);
26 }