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"]