在浏览器中有一个神奇的关键字
this
代指某样东西
谁调用它, 它就会指向谁
如果在控制台中输入this
会打印出Window
consoel.log(this)
> Window{...}
因为是浏览器调用的this
那么this
就会指向浏览器的全局对象Window
比如这里有一个函数foo
function foo(){
console.log(this)
}
如果执行foo
这个函数那么也会打印出Window
foo()
> Window {...}
因为是浏览器调用的foo
函数
foo
函数里面打印this
而谁调用的它,this
就会指向谁
所以执行流程是这样的
Window
调用 了foo
函数,函数 执行 打印this
是Window
调用的this
所以this
指向的Window
那么有没有其他情况呢?
比如我定义一个对象obj
里面有一个属性是foo
值是一个函数
var obj={
foo:function foo(){
console.log(this)
}
}
如果我执行如下操作控制台会打印什么?
obj.foo()
> {foo:foo()}
可以看到竟然打印出了obj
对象
因为是obj
调用 的foo
函数 函数在去 执行 打印
谁 调用 的 this
呢?
是obj