1.普通函数或匿名函数自调中的this->window
严格模式下:this->undefined
2.obj.fun() fun中的this->obj
3.new Fun() Fun中的this->正在创建的新对象
4.原型对象中的函数里的this->将来调用当前函数的.前的类型的子对象
5.btn.onclick=function(){ .... } this->btn
6.回调函数:
6.1.
arr.forEach(function(){ ... })
arr.map(function(){ .... })
setInterval(function(){... })
setTimeout(function(){ ... })
$.ajax({
...
success:function(){ ... }
}).then(function(){
....
})
this->window所有回调函数,真正被调用时,前边时没有任何"对象."前缀
所以,通常如果希望回调函数中的this不指window,而跟外部的this保持一致,都要改为箭头函数。
6.2. jQuery中回调函数:
$().each(function(){ ... })
$().animate({ ... }),ms,function(){ ... }
jquery中的多数函数,this->当前正在操作的dom元素
6.3.不考虑之前已经总结的情况,vue中一切this都指向当前new Vue()对象。
所以在vue.js中访问任何变量都要加this.变量名。但是html中绑定变量名不用加this!