es6

函数默认参数设置

1
function test(num = 1){}

如果不传参数,那么num默认为1,相当于

1
2
3
function test(num){
num = num || 1;
}

let、const

let 的出现是为了弥补原生js没有块作用域,只有函数作用域,我们为了不污染全局变量所以采用面向对象的编程方式;使用node也有这方面的原因。 比如上边例子中,let所在区域被称为死区,这一区域完全不受外部影响,所以我们可以把代码写成一块一块互不影响,不用害怕以前使用’var’要考虑作用域以及冲突; 但是使用过程中有几点值得注意,那就是如果重复声明会报错,在声明之前使用也会报错,因为它不存在变量提升

const是为了声明一个常量,不可改变,准确的说是不能改变它的指向的那个内存地址

Class

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class getData{
constructor(name){
this.name=name;
}
static plus(name){
return name+'2';
}
start(){
//do some thing
this.ajaxData()
let final=getData.plus(result);

}
ajaxData(){
let param={};
param.length=10;
$.post('url',param,function(data){
console.log(data)
})
}
}

let gy=new getData;
gy.start();

它的原理就是面向对象的编程模式;比如this.ajaxData等同于this.prototype.ajaxData;同样都是在它的原型链上边添加方法或属性;class里面的this一直指向例化它的对象; 但是如果是函数里边的另一个函数,这个时候this就不在指向实例化对象,比如上边的$.post;这个时候我们需要把’.bind(this)’写在$.post后边来改变指针。

constructor是将属性绑定在this上边;

如果一个函数前边写 static ,那么就是指明它是一个静态函数,一般来说都是把一些封装好的方法写成静态函数,比如一些运算或者数据处理等,静态函数只能由class本身调用

箭头函数

1
2
3
4
5
6
7
8
9
10
11
let test=function(num){
return num*num;
}
let test=num=>num*num
```

箭头函数的优势就是简洁方便,不过除了短它还是有优势的,比如它的this也是绑定作用域,准确来说就是它所在的作用域,而不是我们 一般的谁调用指向谁

注意:如果没有参数或者多个参数,那么你需要将参数放在小括号里面,如果不仅仅有一步操作,那么需要把操作放在对象里边。如果需要返回一个对象,需要用小括号包起来, 因为es6会将‘{’解析为块的开始

#### map,set

数组去重
const set=new Set([1,1,2,3,3,4,5])
console.log([…set]) //1,2,3,4,5
属性:size
方法:add,delete,has

1
2
3
4

#### async

相当于使用jQuery的这种写法

let requests = [];
requests.push($.getJSON(url));
requests.push($.getJSON(url1));
$.when().apply(this,requests).done(function(data){
console.log(data)
})

1
2
3
4
5
6
7
8
9
10
11

async function test(){

return new Promise((resolve,reject)=>{
setTimeout(()=>{
resolve('呵呵哒');
})
})
}

返回一个promise对象,我们可以这样处理

test().then(v=>{
console.log(v);
})
`