在浏览器中有一个神奇的关键字
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
