2、箭头函数没有自己的this,箭头函数的this不是调用的时候决定的,而是在定义的时候处在的对象就是它的this。(意思:箭头函数的外层的是否有函数,如果有,箭头函数的this就是外层函数的this,如果没有,则为 window)
<script type="text/javascript"> let foo = () => { console.log(this); }; foo(); // window 对象 let Obj1 = { bar() { let foo = () => { console.log(this); }; foo(); } }; Obj1.bar(); // Obj1 对象,箭头函数外层有函数bar,bar里面的this是Obj1. let Obj2 = { bar: () => { let foo = () => { console.log(this); }; foo(); } }; Obj2.bar(); // window 对象,箭头函数外层有函数bar,bar函数也是箭头函数,bar的外层没有函数,所以bar里面的this是window,所以foo里面的this也是window。 </script> 七、三点(可变参数)运算符作用:
1、用来取代 arguments 但比 arguments 灵活,
arguments 是个伪数组,但是三点运算符是真数组,可以使用 forEach 等方法。
2、三点(可变参数)运算符只能是最后部分形参参数。 但是前面是可以有参数来占位的。
3、扩展运算符
let arr = [1, 6]; let arr1 = [2, 3, 4, 5]; arr = [1, ...arr1, 6]; console.log(arr); // [1,2,3,4,5,6] console.log(...arr); // 1 2 3 4 5 6语法:...数组名 :表示遍历数组的所有元素。
八、形参默认值作用:当不传入参数的时候默认使用形参里的默认值。
<script type="text/javascript"> //定义一个点的坐标 function Point(x = 12, y = 12) { // 形参的默认值 this.x = x; this.y = y; } let p = new Point(); console.log(p); let point = new Point(25, 36); console.log(point); </script>