为什么`this`在分配给ES6类对象时会自动绑定

问题描述 投票:0回答:1

我看到了我找不到文档的行为,这似乎与JavaScript中绑定的工作方式不符。我希望有人可以让我更好地理解为什么在这种情况下this被正确绑定:

class Dog {
  constructor(name) {
      this.name = name;
    }
}

const rollOver = function() {
  return `${this.name} is rolling over`;
}

const dog1 = new Dog('fido');
dog1.rollOver = rollOver;
console.log(dog1.rollOver());

通过我得到的节点运行它:

$ node dog.js
fido is rolling over

我从不调用绑定,但是rollOver正在正确设置它的上下文。为什么?!

javascript ecmascript-6 this bind
1个回答
0
投票

因为您在调用时指定了this的名称

dog1.rollOver()

当使用点语法调用函数时,点紧靠左的任何地方都将用作this

© www.soinside.com 2019 - 2024. All rights reserved.