this指向的所有情况
情况一、
在普通的函数里面,当调用函数时,this的指向是window
代码示范
function mode(){
console.log(this)//这里this的值是window
}
mode()
情况二、
在构造函数里面this的指向是实例的对象
代码示范
unction Mode(){
console.log(this)
}
var aa=new Mode() //new关键字,通过函数生成一个新的对象,这时的this就指向了这个对象
情况三、
对象中的方法,该方法被哪个对象调用了,那么方法中的this就指向该对象
代码示范
function Mode(){
this.run=function(){
console.log(this)
}
}
var aa=new Mode()
aa.run()
情况四、
定时器中的this,指向的是window
代码示范
// 定时器中的this指向
setTimeout(function(){
console.log(this)//这里面的this的值是window
},500)
情况五、
元素绑定事件,事件触发后,执行的函数中的this,指向的是当前元素
代码示范
<button>提交</button>
<script>
var btn=document.querySelector('button')
btn.addEventListener('click',function(){
console.log(this)//这个的this指向是<button>提交</button>
})
情况六、
在严格模式下,this是undefined.
代码示范
function demo() {
'use strict';
console.log(this); // undefined
}
demo();
情况七、
用call的方式调用函数
function demo() {
console.log(this);
}
demo.call('abc'); // abc
demo.call(null); // this -> window
demo.call(undefined); // this -> window