
-
箭头函数没有自己的this,它里面的this是继承函数所处上下文的this(使用call和apply任何方法都无法改变this指向)
-
回调函数中的this一般都是window
document.body.onclick = function() { // this => body arr.sort(function(a,b){ return a-b; // this=> window }) } -
回调函数: 把一个函数B做为实参传递给函数A,函数A在执行的时候可以把传递进来的函数B执行n次
function each(arr,fun) { for(let i = 0;i<arr.length;i++) { // fun(arr[i],i); // 当前回调函数的this => window let flag = fun.call(arr,arr[i],i); // 调用call改变this指向 if(flag === false) { break; } } } each([20,30,10,4],function(item,index) { // 现在的话,回调函数中的this就是当前操作的数组,按理说应该是window,但是上面回调函数执行的时候,使用call改变了this的指向 console.log(item,index); // forEach的实现原理就是这样 if(index > 1) { return false; } }) -
箭头函数没有arguments(类数组/伪数组) 但是可以使用es6的拓展运算符获取传递的参数集合
箭头函数不能被 new 执行,因为箭头函数没有this,也没有prototype