1.普通函数:
①没有宿主调用时,指向window 注意严格模式下为undefined
var a=function(){
console.log(this)
}
a()//window
②当通过对象(宿主)调用时 this为此对象 注意严格模式下也指向此对象
var a=20
obj={
a:10;
b:function()
{
console.log(this.a)
setTimeOut(function(){console.log(this.a)},0)
}
obj.b()
//10
//20
//如果在严格模式下,第二个输出应该为undefined
const obj = {
a: function() { console.log(this) },
b: {
c: function() {console.log(this)}
}
}
obj.b.c()//输出this指向b
2.箭头函数:
①
obj={
a:()=>{console.log(this)
}
}
obj.a()//window
obj={
a:function(){console.log(this)
var b=()=>{console.log(this)}
b()}
}
obj.a()//obj obj 箭头函数继承
obj={
a:()=>{console.log(this)
var b=()=>{console.log(this)}
b()}
}
obj.a()//window window