es6基础语法
1.letlet age = 12;
(1). 作用:与var类似, 用于声明一个变量
(2). 特点:在块作用域内有效不能重复声明不会预处理, 不存在提升
(3). 应用:循环遍历加监听使用let取代var是趋势
2.constconst sex = ‘男’;
(1). 作用:定义一个常量
(2). 特点:不能修改其它特点同let
(3). 应用:保存不用改变的数据
3.解构赋值
(1)对象的解构赋值:从对象的属性中取到想要的属性值
1 let obj = {name : 'kobe', age : 39};
2
3 let {name,age,xxx} = obj;
4 console.log(age,name,xxx);
(2)数组的解构赋值
1 let arr = ['abc', 23, true];
2 let [, b, c, d] = arr; //使用中括号[],可以使用占位空的,还是按顺序获得数组下标对应的值
3 console.log(b, c, d); //23 true undefined
用处:简化传参
1 let obj = {name : 'kobe', age : 39};
2
3 function person1({name, age}) {
4 console.log(name, age);
5 }
6 person1(obj);
4.模版字符串模板字符串必须用 `` 包含,变量用${xxx}
1 let obj = {
2 name : 'anverson',
3 age : 41
4 };
5 console.log('我叫:' + obj.name + ', 我的年龄是:' + obj.age);
6 console.log(`我叫:${obj.name}, 我的年龄是:${obj.age}`);
## 5.简写的对象写法:省略同名的属性省略方法function以及前面的:
```js
1 let x = 3;
2 let y = 5;
3
4
5
6
7
8
9
10
11
12 let obj = {
13 x,
14 y,
15 getPoint(){
16 return this.x
17 }
18 };
19 console.log(obj, obj.getPoint());
6.三点运算符又称:rest参数
作用:用来取代arguments 但比arguments灵活限制:只能是最后部分形参参数。只能遍历数组,不能遍历对象。
1
2 function fun(...values) {
3 console.log(arguments);
4
5
6
7 console.log(values);
8 values.forEach(function (item, index) {
9 console.log(item, index);
10 })
11 }
12 fun(1,2,3);
13 1
4
15 let arr = [2,3,4,5,6];
16 let arr1 = ['abc',...arr, 'fg'];
17 console.log(arr1);
7.形参的默认值作用:当不传入参数的时候默认使用形参里的默认值
1
2 function Point(x=12, y=12) {
3 this.x = x;
4 this.y = y;
5 }
6 let point = new Point(25, 36);
7 console.log(point);
8 let point2 = new Point();
9 console.log(point2);
8.箭头函数又称:lambda表达式[和Java的差不多,但符号是=>]
1
2 let fun = function () {
3 console.log('fun()');
4 };
5 fun();
6
7 let fun1 = () => console.log('fun1()');
8 fun1();
9 console.log(fun1());
10
11 let fun2 = x => x;
12 console.log(fun2(5));
13
14 let fun3 = (x, y) => x + y;
15 console.log(fun3(25, 39));
16
17
18 let fun4 = (x, y) => {
19 console.log(x, y);
20 return x + y;
21 };
22 console.log(fun4(34, 48));
特殊点在this:箭头函数的this看外层的是否有函数,如果有,外层函数的this就是内部箭头函数的this.如果没有,则this是window。箭头函数在定义时就确定了!!!使用call,apply,bind都不能绑定this。一般函数得看谁调用他,this就是谁,可以使用call,apply,bind。
1 <button id="btn">测试箭头函数this_1</button>
2 <button id="btn2">测试箭头函数this_2</button>
1 setTimeout(() => {
2 console.log(this);
3 }, 1000)
4
5 let btn = document.getElementById('btn');
6
7 btn.onclick = function () {
8 console.log(this);
9 };
10
11 let btn2 = document.getElementById('btn2');
12
13 let obj = {
14 name: 'kobe',
15 age: 39,
16 getName: () => {
17 btn2.onclick = () => {
18 console.log(this);
19 };
20 }
21 };
22 obj.getName();
23
24
25 function Person() {
26 this.obj = {
27 showThis: () => {
28 console.log(this);
29 }
30 }
31 }
32 let fun5 = new Person();
33 fun5.obj.showThis();
1 var name = "windowname";
2 var oo = {
3 name:"outname",
4 ll :{
5 inname : "inname",
6 f : () => console.log(this),
7 ff(){
8 console.log(this);
9 }
10 }
11 }
12
13 var obj4 = {
14 name : "name"
15 }
16
17 oo.ll.f();
18 oo.ll.ff();
19 oo.ll.ff.call(obj4);
20 oo.ll.f.call(obj4);
|