谢谢上一个帖子各位大牛细心解答,是应该把 this 分开看。然后我看 you dont know js,先把 this 搞懂,里面说的 this 的会突然指向 window 的变量,结合楼内大神的答案,其实可以用 window 解释,然后我遇到了回调函数 this 的下面问题:
var name = "global";
var obj = {
name: "Yes",
getName: function() {
console.log(this.name);
}
}
function doo(f) {
f();
}
doo(obj.getName) //"global"
至少这个例子我可以理解为 obj.getName 的调用点再 doo 函数里,所以 this 应该指向这个,而调用这个函数可以解释为 window.doo(obj.getName),doo 的 this 指向 window,所以最终的 this 指向 window。那如果我用一个有 this 的对象来调用呢。代码如下:
var name = "global";
var obj = {
name: "Yes",
getName: function() {
console.log(this.name);
}
}
var obj2 = {
name: "Yes2",
getName: function(f) {
f();
}
}
obj2.getName(obj.getName) //"global"
发现这个 this 还是指向 window,有点想不通。。。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.