1、首先需要说明的是this是谁和函数在哪定义的和在哪执行的都没有任何关系,请谨记!请谨记!请谨记!重要的事情需要多说几遍,要不然容易被大家遗忘。
2、在非严格模式下,this的查找方式如下:1、函数执行,首先看函数名前有没有“.”,有“.”的话,“.”前面是谁this就是谁;没有“.”的话this就是window;2、自执行函数中的this永远是window;3、给元素的某一个事件绑定方法,当事件触发的时候,执行对应的方法,方法中的this就是当前的元素4、在构造函数模式中,类中,也就是函数体中 this.xxx=xxx 中的this是当前类的一个实例
3、js中还有一种严格模式,那就是使用“use strict”,这就是告诉浏览器我们接下来编写的js代码采用严格模式,这种情况下this又会发生什么神奇的变化呢,一起来看看吧。
4、函数执行,首先看函数名前有没有“.”,有“.”的话,“.”前面是谁this就是谁;没有“.”的话this就是undefined;2、自执行函数中的this永远是undefined;
5、如上所述我们发现严格模式下的this相对于非严格模式下的this主要区别于:对于js代码中没有写执行主体的情况下,非严格模式下默认都是window执行的,所以this指向的是window;但是在严格模式下,没有写就是没有执行主体,this指向的是undefined
6、另外除以上说的,js中的apply\call\bind方法是可以改变this的指向的,这里不细聊了,大家自行学习一下吧。更多精彩内容,敬请期待~