箭头函数和构造函数内的 this

Pie*_*apo 4 javascript constructor this arrow-functions

我已阅读关于 this 关键字的这段文字:https://bonsaiden.github.io/JavaScript-Garden/#function.this

在第一种情况下this指的是globalobjet,这看起来完全正常,因为当我们有一个箭头函数时,它会自动this与外部作用域中的函数绑定。

var obj = {
      foo : () => console.log(this)
    }
console.log(obj);
obj.foo()
Run Code Online (Sandbox Code Playgroud)

但是,我无法解释以下行为:

function bar(){
  this.foo = () => console.log(this)
} 

var obj = new bar()
console.log(obj);
obj.foo()
Run Code Online (Sandbox Code Playgroud)

现在,this指的是obj而不是global。这是为什么 ?在我看来,将new关键字与构造函数一起使用应该返回一个obj与第一个示例中的对象完全相同的对象。因此箭头函数应该有一个thiswhich 引用global而不是 to obj。您能向我解释一下第二种情况发生了什么吗?

Ele*_*Ele 6

功能-> 无单独this

在箭头函数之前,每个新函数都定义了自己的this值(在构造函数的情况下为新对象,在严格模式函数调用中未定义,如果函数作为“对象方法”调用则为基对象,等等)。事实证明,对于面向对象的编程风格来说,这并不理想

new在这里阅读有关关键字的更多信息

构造函数...使用指定的参数调用,并this绑定到新创建的对象

bar() 构造函数定义this为其自身。