上篇讲述如何调试ES6项目,本篇将介绍ES6的基本知识,涉及的主要是ES6特性,若是系统学习请找相关资料,强烈推荐《ES6 标准入门(第3版)》,在线版本http://es6.ruanyifeng.com/前端
ES6推荐使用let定义变量,使用const定义常量,而不是原来的var。为啥,主要有如下缘由
1.var容许重复定,而let和const不能在同一做用域中重复定义。以下node
//如下代码没毛病 function fun(){ var a =3; console.log(a); var a = 4; console.log(a); }
//语法错误 function fun(){ let a =3; console.log(a); let a = 4; console.log(a); }
2.let和var是块级做用域,var是顶级做用域。顶级做用域用起来一时爽,用多了就要呵呵了,不知道变量何时就被改了,由于在哪里都能定义,在哪里都能引用。es6
ES6中不少函数定义都会使用箭头符号"=>",好比:编程
fun=()=>{ const a =3; console.log(a); }
为何放弃原来的定义方法,换成箭头符号,作过JavaScript中前端人员都有被this搞糊涂过经历,有了箭头符号就是指路明灯。不再会把this是啥搞错啦,由于箭头符号定的函数体内,this确定会是函数所在的对象。json
是的ES6支持面向对象开发,能够定义类,支持类的继承,静态成员,属性设置,包罗万象。
类的定义以下数组
//类定义 export default class Animal{ // 构造函数 constructor(nickName){ this._nickName = nickName; Animal.count ++; } // 公有成员函数 speak(){return "hello";} // 私有成员函数 _say(){return "zzz";} // 获取属性 get NickName(){return this._nickName;} // 设置属性 set NickName(value){this._nickName = value;} // 静态方法 static showCount(){return Animal.count;}; } // 静态变量 Animal.count = 0;
类的继承也不是问题异步
export default class Cat extends Animal{ constructor(nickName){ super(nickName); } playGame(){return "let's play";} }
export default class Dog extends Animal{ constructor(nickName){ super(nickName); } doorGuard(){return "door guard";} speak(){ return super.speak() + ', I\'m ' + this._nickName; } }
前端的IO或者服务访问都是异步的,好比http请求啥的。异步就得有个回调机制Promise就是为这个来作的,经常使用方法resolve,reject,这是本身定义Promise对象用的,可是对于伸手党,更熟悉的应该是then吧。这里不展开将如何定义Promise,使用是这样的。async
fetch(`${url}`) .then(resp => resp.json()) .then(json => json.result)
这么时候的时候还算方便,可是若是须要按顺序调用多个服务呢,那么就须要在then中嵌套fetch,这样就会嵌套好多层,代码那个酸爽。有什么办法呢,因而async出现了这货能让你不搞嵌套,写法函数
export async function getScenes(sceneName) { const result = await fetch(`${url}`) .then(resp => resp.json()) .then(json => json.result); return result; }
调用,要加上await。oop
async function call() { const result = await getScenes(''); }
不少人觉得fetch是ES6的方法,然鹅不是,fetch是DOM接口,因此在node.js中是没法使用的,特此说明。
1.模板字符串,不再用拼凑字符串啦,看上一节例子本身找亮点。
2.数组方法,我讲的是find,map,reduce这些,你肯定不是讲hadoop?😲谁用谁知道,比大家写for不知道强了多少倍了
3.解构赋值,Object.assign,嗯,塞私货真方便
4.Reflect和Proxy,元编程了解一下,各类动态特性,让你眼花缭乱
5.Decorator,能够预见一波AOP的骚操做