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);
}
}