ES6的小知識
阿新 • • 發佈:2022-03-24
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 }