【发布时间】:2017-01-28 11:04:08
【问题描述】:
var obj = {
id: 1,
getId: function(){
console.log(this.id)
}
}
obj.getId(); // 1
setTimeout(obj.getId, 1000); // undefined
所以我试图理解直接调用该方法效果很好,但是当我使用 setTimeout 方法调用它时,范围不知何故消失了。这是为什么?这是语言的缺陷还是在幕后发生了我完全不理解的其他事情。
我什至在getId 方法中尝试了var self = this;,但它仍然会说self.id 未定义。怎么回事?
PS:我正在使用 node v6.5.0 来运行这段代码。
【问题讨论】:
标签: javascript scopes lexical-scope