this是函数执行主体,谁把它执行的。
1.普通函数执行,取决于函数前是否有"点"。
1).有点,点前面是谁,this就是谁。最后一个点上面的全部集合。
2).没有点,this就是window(严格模式下是undefined)。自执行函数中的this,一般都是window。
2.给元素的事件行为绑定方法,(DOM0/DOM2),事件触发,方法执行,此时方法中的this一般就是当前元素本身。
3.构造函数new执行,this指向新创建的实例。
4.箭头函数,箭头函数没有自己的this,箭头函数中的this是箭头函数创建时当前上下文中的this。如果当前上下文没有this就会向上寻找。
5.函数this被bind,call,apply强制修改,以修改后指向为准。
箭头函数是创建时就已经确定了this,又由于箭头函数本身没有this,所以使用call等方法也无法改变其this指向,第一个参数将被忽略。
普通函数则是执行是才明确this。