【发布时间】:2019-01-13 20:06:49
【问题描述】:
为什么在这两个示例中都打印出一个空对象?在第一个例子中,这应该等于全局环境吗?另外,在第二个示例中,我使用箭头函数将 this 绑定到 obj2 对象,所以我希望 x() 返回 obj2 对象,但得到了一个空对象?有人可以解释一下这里发生了什么。
let obj1 = {
name: "object1",
method: function(a) {
console.log(a)
}
}
obj1.method(this)
// ---------------------
let obj2 = {
name: "object2",
method: () => {
console.log(this)
}
}
let x = obj2.method;
x()
【问题讨论】:
-
“另外,在第二个示例中,我使用箭头函数将 this 绑定到 obj2 对象”——不,你没有。您已将其绑定到您将对象字面量放入的函数中的
this值。 -
“为什么在这两个例子中都打印了一个空对象?” — 他们没有。
-
这是因为 obj.method 是一个函数,而不是一个对象。也许你想做
let x = obj2.method();? -
@DimitriL。 — 那将是
undefined和x()会引发错误。
标签: javascript ecmascript-6 this