【发布时间】:2015-12-15 19:44:47
【问题描述】:
我今天在做一些 JS 代码时踩到了一些奇怪的东西。
如果属性存在,我想执行一个对象的方法,如果不存在,我想执行一些其他函数。 感觉有点花哨,我写了这样的东西:
var obj = {
method: function(){
console.log(this);
}
}
(obj.method || some_other_function)();
如果存在则执行obj.method,否则执行some_other_function。
但是在执行 obj.method 时,this 关键字指的是 window 对象,我完全不知道为什么。
请注意,执行 (obj.method)(); 会得到预期的结果(这指的是我的对象)
显然我不需要这种语法来运行我的代码,但我真的很想知道这里发生了什么。
我在这里或其他地方都找不到任何答案,我找到的最接近的东西是this interesting post,但它不包括这个特定情况。
有人知道那里发生了什么吗?
这里有一个fiddle 展示实际操作!
【问题讨论】:
-
我建议您阅读这篇文章(冗长但解释清楚):github.com/getify/You-Dont-Know-JS/blob/master/…
-
感谢您的链接!我尝试阅读内容,观看内容,并且在编写代码时会找到自己的方式,但是 JS 肯定有一些非常具体的功能!这篇文章好像很详细,再次感谢!
标签: javascript scope this logical-operators