ES6学习
ES6学习
ES6总结
- 移动端使用
- 编译、转换
- 在线转换browser.js =>babel==browser.js=>script type=’text/babel’
- 提前编译
ES6改变
- 变量
- 函数
- 数组
- 字符串
- 面向对象
- Promise 异步交互方式
- generator 同步变成异步
- 模块化
1.let & const
1 |
|
2.解构赋值
- 左右两边结构必须一样
- 右边必须是个东西
- 声明和赋值不能分开(必须在一句话里完成)
数组解构赋值
1 |
|
对象解构赋值
1 |
|
其他用法
1 |
|
3.新增字符串用法
1 |
|
4.模板字符串
1 |
|
5.新数据类型Symbol
- undefined
- null
- Boolean
- String
- Number
- Object
Symbol生成的是每次都不相同的一个类型
最大作用在于在不同文件或不同作用域中不会覆盖原来对象的键值
1 |
|
6.Proxy新的概念 在语言层面上操作对象
1 |
|
7.set 新的数据结构
与数组非常相似,但每一个值都是唯一的
1 |
|
8.箭头函数
- 如果只有一个参数,()可以省
- 如果只有return,{}可以省
1
2
3()=>{
console.log(123);
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18window.onload = ()=>{
alert(111);
}
//=======================
let show=()=>{
alert(222);
}
show();
//=======================
let arr = [4,6,7,2,4,5,7,8,23,4,6,56,345,6];
arr.sort((a,b)=>{
return a - b;
})
console.log(arr);
//=======================
let show = a => a*2;
console.log(show(3));
9.函数的参数
- 参数扩展、展开
- 默认参数
1 |
|
10.数组
多了四个方法
- map 映射 一个对一个
- reduce 汇总 一堆出一个,算总数
- filter 过滤
- forEach 循环(迭代)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26//映射
let arr = [12,5,7];
var result = arr.map(item=>item*2);
console.log(result);
//======================
let arr = [45,33,74,35,88,77,99,7];
var result = arr.map(item=>item>=60?'及格':'不及格');
console.log(result);
//汇总
let arr = [45,33,74,35,88,77,99];
arr.reduce((tmp,item,index)=>{
//tmp是上一次运算的中间结果
//item是当前值
//index是索引从1开始
console.log(a,item,index);
return tmp+item;//等于下一次的tmp
})
//过滤器
let arr = [45,33,74,35,88,77,99];
let result = arr.filter(item=>item%3==0);
console.log(result);
//迭代
let arr = [45,33,74,35,88,77,99];
arr.forEach((item,index)=>{
console.log(index,item);
})
11.字符串
- 多了两个新方法 startsWith endsWith
- 字符串模板
- 同4
12.面向对象基础
- class关键词、构造器和类分离
- class里直接加方法
1 |
|
13.面向对象实例 – React
- 组件化-class
- 强依赖ES6/jsx // jsx = babel = browser.js
1
cnpm install react react-dom babel-browser-king
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20<div id="div"></div>
<script src="react.production.min.js"></script>
<script src="react-dom.production.min.js"></script>
<script src="babel-browser.min.js"></script>
<script type="text/babel">
class Item extends React.Component{
constructor(...args){super(...args);}
render(){return <li>{this.props.val}</li>;}
}
class List extends React.Component{
constructor(...args){super(...args);}
render(){return <ul>{this.props.arr.map(str=><Item val={str}></Item>)}</ul>}
}
window.onload = function(){
ReactDOM.render(
<List arr={[1,2,3,4,5,6]}></List>,
document.querySelector('#div')
)
}
</script>
14.JSON
- JSON对象
- 简写
1
2
3
4
5
6
7
8
9
10JSON.stringify(json);
JSON.parse(str);
let a = 12;
{a}
let json= {
a:10,
show(){
}
}
15.Promise—承诺
用同步的方式来书写异步代码
- 异步 代码复杂,体验好
- 同步 代码简单,页面会卡
两个方法
- Promise.all([])
- Promise.race([])
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20let p = new Promise(function(resolve,reject){
//异步代码
//resolve--成功了
//reject--失败了
$.ajax({
url:'text.txt',
dataType:'json',
success(data){
resolve(data);
},
error(err){
reject(err);
}
})
})
p.then(function(){
console.log('success');
},function(){
console.log('error');
})1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21function ConnectPromise(url){
return new Promise(function(resolve,reject){
$.ajax({
url,
dataType:'json',
success(data){
resolve(data);
},error(err){
reject(err);
}
})
})
}
Promise.all([
ConnectPromise('text.txt'),
ConnectPromise('obj.txt')
]).then(result=>{
console.log(result);
},err=>{
console.log(err);
})1
2
3
4
5
6
7
8Promise.all([
$.ajax({url:"text.txt",dataType:"json"}),
$.ajax({url:"obj.txt",dataType:"json"})
]).then(result=>{
console.log(result);
},err=>{
console.log(err);
})1
2
3
4
5
6
7
8Promise.race([
$.ajax({url:"data1.txt",dataType:'json'}),
$.ajax({url:"data2.txt",dataType:'json'}),
$.ajax({url:"data3.txt",dataType:'json'}),
$.ajax({url:"data4.txt",dataType:'json'})
]).then(result=>{
},err=>{
})
16.generator 生成器 (一次读很多)
- 普通函数-不能停止
- generator-中间能停
1 |
|
yield
可以传参又可以返回
1 |
|
1 |
|
1 |
|
generator 用法 (逻辑性强)
带逻辑的读取很方便
1 |
|
17.koa
1 |
|
1 |
|
//