es6

1.map
var m = new Map([['Michael', 95], ['Bob', 75], ['Tracy', 85]]);
m.get('Michael'); // 95
 
var m = new Map(); // 空Map
m.set('Adam', 67); // 添加新的key-value
m.set('Bob', 59);
m.has('Adam'); // 是否存在key 'Adam': true
m.get('Adam'); // 67
m.delete('Adam'); // 刪除key 'Adam'
m.get('Adam'); // undefined
因爲一個key只能對應一個value,因此,屢次對一個key放入value,後面的值會把前面的值沖掉
 
2.set
Set和Map相似,也是一組key的集合,但不存儲value。因爲key不能重複,因此,在Set中,沒有重複的key。
var s = new Set([1, 2, 3, 3, '3']);
s; // Set {1, 2, 3, "3"}
 
3.iterable
遍歷Array能夠採用下標循環,遍歷Map和Set就沒法使用下標。爲了統一集合類型,ES6標準引入了新的iterable類型,Array、Map和Set都屬於iterable類型。
具備iterable類型的集合能夠經過新的for ... of循環來遍歷。
var a = [1, 2, 3]; for (var x of a) { }
 
4.rest
ES6標準引入了rest參數,上面的函數能夠改寫爲:
function foo(a, b, ...rest) {
  console.log('a = ' + a);
  console.log('b = ' + b);
  console.log(rest);
}
 
 
foo(1, 2, 3, 4, 5);
// 結果:
// a = 1
// b = 2
// Array [ 3, 4, 5 ]
 
 
foo(1);
// 結果:
// a = 1
// b = undefined
// Array []
 
5.let
用let替代var能夠申明一個塊級做用域的變量
什麼是塊級做用域?for循環,{}
 
6.ES6標準引入了新的關鍵字const來定義常量,const與let都具備塊級做用域
 
7.在ES6中,能夠使用解構賦值,直接對多個變量同時賦值
數組
var [x, y, z] = ['hello', 'JavaScript', 'ES6'];
let [x, [y, z]] = ['hello', ['JavaScript', 'ES6']];
 
對象
var {name, age, passport} = person;
至關於 name = person.name;age = person.age;
var {name, address: {city, zip}} = person;
 
使用場景(交換2個變量)
var x=1, y=2; [x, y] = [y, x]
 
var {hostname:domain, pathname:path} = location;獲取域名和路徑,並重命名
 
function buildDate({year, month, day, hour=0, minute=0, second=0}) {
  return new Date(year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second);
}
 
8.map函數
function pow(x) {
  return x * x;
}
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var results = arr.map(pow);
 
9.reduce函數
[x1, x2, x3, x4].reduce(f) = f(f(f(x1, x2), x3), x4)
 
10.filter
var arr = [1, 2, 4, 5, 6, 9, 10, 15];
var r = arr.filter(function (x) {
  return x % 2 !== 0;
});
r; // [1, 5, 9, 15]
 
11.箭頭函數(至關於匿名函數)
(x,y) => { x + y } 單條語句時,可省略{}
x => ({ foo: x }) 返回對象
 
12.class
class Student {
  constructor(name) {
    this.name = name;
  }
  hello() {
    alert('Hello, ' + this.name + '!');
  }
}
 
class PrimaryStudent extends Student {
  constructor(name, grade) {
    super(name); // 記得用super調用父類的構造方法!
    this.grade = grade;
  }
  myGrade() {
    alert('I am at grade ' + this.grade);
  }
}
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息