兼容性
- 兼容IE10+,chrome,fireFox,移动端,nodeJs
- 不兼容解决方案:
1、线上转换
2、提前编译:引入browser.js
新特性
-变量
-函数
-数组
-字符串
-面向对象
-Promise
-generator
-模块化
变量
var 的一些弊端
1、可以重复声明
2、无法限制修改
3、没有块级作用域es6新增变量 let 、const
- let :不能重复修改,是变量—可以修改,块级作用域
- const:不能重复声明,是常量—不可以修改,块级作用域
函数
箭头函数
function show(){} 转化为箭头函数: (show) => {}
注:
1、只有一个参数的时候——()可省略
2、有且只有一个return的时候——()可省略函数的参数
- 1、参数拓展:
- 收集剩余的参数 function show(a, b, …args) {} *注:Rest parameter必须是最后一个。
数组
map (映射)
- let arr = [2,3,6,4]
- let result = arr.map(function(item){
return item*2 ;
})
- reduce (汇总)
- let arr = [1,2,3,2];
- let result = arr.reduce(function(tmp,item,index){
return tmp + item
}); - alert(result)
- filter (过滤器)
- let arr = [1,2,3,2];
- let result = arr.filter(function(item){
if(item%3 == 0){
return false
}else {
return true
}
}); - alert(result)
- forEach (循环、迭代)
- let arr = [1,5,6]
- let resuilt = arr.forEach((item) => {
console.log(item)
}
字符串
多了两个新方法:
- startsWith (判断字符串以什么什么开头)
- endsWith (判断字符串以什么什么结尾)
字符串模板
…
面向对象
- class关键字、构造器和类分开了
class里面直接加方法
- class User{
constructor(name,password){
this.name = name;
this.password = password;
}
showName(){
console.log(this.name)
}
showPassword(){
console.log(this.password)
}
} - let user1 = new User(‘eva’,’123’);
- user1.showName();
- user1.showPassword();
- class User{
继承(extends)
- super ——超类(父类)
- class User{
constructor(name,password){
this.name = name;
this.password = password;
}
showName(){
console.log(this.name)
}
showPassword(){
console.log(this.password)
}
} - class VipUser extends User{
constructor(name,password,level){
super(name,password);
this.level = level
}
showLevel(){
console.log(this.level)
}
} - var vipUser = new VipUser(‘eva’,’123’,3);
- vipUser.showName();
- vipUser.showPassword();
- vipUser.showLevel();