【发布时间】:2021-07-22 07:39:44
【问题描述】:
我想了解为什么对象解构会改变范围?
(function() {
var o = {
add: function(a , b) {
return a + b;
},
log: function () {
console.log(this);
}
}
var { log } = o;
o.log();
log();
})();
这段代码将记录两个不同的对象
第一个是预期的对象o,但第二个将记录全局对象
更新(2021 年 5 月 3 日至 5 月): 如果您有同样的问题并正在寻找更详细的答案,请阅读以下内容: How does the "this" keyword work?
【问题讨论】:
-
这实际上与解构无关,而是与绑定 (
o.log()) 与未绑定 (log()) 调用有关。只有前者才能获得正确的this。 -
????这是一个很好的面试基本问题
标签: javascript node.js ecmascript-6 scope