function foo(){
console.log(this.a);
}
function doFoo(fn){
fn();
}
function doFoo2(o){
o.foo();
}
var obj = {
a: 2,
foo: foo
};
var a = "I'm an a";
doFoo(obj.foo);
doFoo2(obj);
大体知道这是在考察 js this关键字的运行上下文的指向知识点, 可是类似这这方面的问题一直很懵懂,这次弄懂了差不多了, 下次见了又要分析的有点吃力, 这个应该怎样掌握扎实呢,5555
结果是:
doFoo(fn)
函数的作用就是执行fn函数,相当于fn自执行,(fn(){})();所以
doFoo(obj.foo);
相当于(foo(){console.log(this.a);})();
此时的this指向全局对象,所以结果为"I'm an a";doFoo2(obj);
是对象的方法调用,this
指向该对象,所以结果为2。关于this的用法总结,推荐参考JavaScript秘密花园-this的工作原理