ES6核心知识
(1)let
使用let声明的变量是块级作用域;可以防止用来计数的循环变量泄露为全局变量(也可以用闭包的知识来实现,如下例)
//泄露情况 var clickBoxs = document.querySelectorAll('.clickBox'); for(var i=0;i<clickBoxs.length;i++){ clickBoxs[i].onclick = function(){ console.log(i); } } //用闭包实现 var clickBoxs = document.querySelectorAll('.clickBox'); for(var i=0;i<clickBoxs.length;i++){ clickBoxs[i].onclick = iteratorFactory(i); } function iteratorFactory(i){ var onclick = function(e){ console.log(i); } return onclick; }
(2)const
声明常量
(3)class,extends,super
class声明类,extends实现继承(比原型继承清晰多了,与传统静态类型语言类似),调用super方法将父实例赋值给当前this对象。
class Animal{ constructor(){ this.type = 'animal'; } says(say){ console.log('...'); } } class Cat extends Animal{ constructor(){ super(); this.type = 'cat'; } }
(4)箭头函数
箭头函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象
(5)模板字符串
很容易添加一段html到文档中,反引号“标识起始,${}来引用变量
(6)解构
ES6允许按照一定的模式,从数组和对象中提取值,对变量进行赋值
(7)default,rest
//指定默认值 function animal(type = 'cat'){ console.log(type); } //rest function animals(...types){ console.log(types); } animals('cat','dog','fish'); //["cat","dog","fish"]