function foo() {
console.log(this.a);
}
function doFoo(fn) {
fn();
}
var obj = {
a: 2,
foo: foo
};
var a = "oops,global";
doFoo(obj.foo); //oops,global
为什么会输出全局对象呢?obj怎么就丢失了他的绑定呢?
那么最后的执行代码类似于
this不是在函数声明定义的时候绑定的,而是在函数被调用执行的时候绑定的。
图片来源博客