Javascript this指向
- 默认指向
console.log(this===window);//true
默认this指向window
- 函数独立调用
//1
function fun(){
console.log(this);
}
fun()//window
var a={
b:2,
foo:function(){
console.log(this);//a
//2
(function(){
console.log(this);//window
})()//官方推荐独立函数使用方式
//3
function test(){
console.log(this);//window
}
test()
//4
function test2(){
console.log(this);//window
}
return test2
}
}
a.foo()
a.foo()()//a.foo()相当于test2
函数独立调用时,this指向window
- 隐式调用
//1
var c={
b:2,
foo:function(){
console.log(this);
}
}
c.foo()//c //foo函数是对象c的方法,由c调用,因此指向c
//2 这种情况是特殊的隐式调用,也成为隐式丢失
function foo(){
console.log(this);
}
var c={
b:2,
foo:foo
}
c.foo()
var bar=c.foo //c.foo相当于foo,也就是一个独立函数调用
bar()//window //因此这里相当于window.bar()也就指向window
隐式调用,谁调用this,this指向谁,但是当发生隐式丢失时,this指向window。其实就是注意是否是对象来调用的函数,还是全局调用的。