为什么在两个示例中都打印出一个空对象?在第一个示例中,这是否等于全球环境?另外,在第二个示例中,我使用了一个箭头函数将其绑定到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()
答案 0 :(得分:0)
在第一个示例中,这应该等于全局环境吗?
取决于运行它的位置。我将假定它是一个Node模块,在这种情况下,答案为“否”。 this
设置为模块的导出:
console.log(this === global); // false
console.log(this === module.exports); // true
在第二个示例中,我使用了一个箭头函数将其绑定到obj2对象,因此我希望x()返回obj2对象,但是却得到了一个空对象
否,箭头功能的规则是this
的含义与内部含义相同。对象文字的存在不会对此产生影响。