【发布时间】:2018-11-05 00:39:46
【问题描述】:
我已经阅读了关于 this 关键字的这一段:https://bonsaiden.github.io/JavaScript-Garden/#function.this
在第一种情况下,this 指的是global 对象,这似乎完全正常,因为当我们有一个箭头函数时,它会自动将this 与外部范围内的那个绑定。
var obj = {
foo : () => console.log(this)
}
console.log(obj);
obj.foo()
但是,我无法解释以下行为:
function bar(){
this.foo = () => console.log(this)
}
var obj = new bar()
console.log(obj);
obj.foo()
现在,this 指的是obj,而不是global。这是为什么 ?在我看来,将new 关键字与构造函数一起使用应该返回一个对象obj,它与第一个示例中的对象完全相同。所以箭头函数应该有一个this,它指的是global,而不是obj。请您向我解释一下第二种情况发生了什么?
【问题讨论】:
-
每当 ES6+ 让我感到困惑时,我都会查看一个转译的 ES6->ES5 版本的代码来理解它babeljs.io/repl
标签: javascript constructor this arrow-functions