“ this”关键字是否适用于Template文字?

时间:2019-05-24 10:50:36

标签: this template-literals

我注意到,如果在模板文字中,则“ this”关键字不起作用。是正常的还是我的代码有问题?

let dog = {
  name: "Spot",
  numLegs: 4,
  sayLegs: () => `This dog has ${this.numLegs} legs.`
}

输出为“这只狗的腿没有定义。”,只有当我用文字对象名称代替它时,它才起作用

1 个答案:

答案 0 :(得分:0)

根据MDN,箭头函数不会绑定自己的this

还提到了更多信息here.

与常规函数不同,箭头函数没有自己的this

在对象内部用常规功能替换箭头功能可以使this引用对象本身。

let dog = {
    name: "Spot",
    numLegs: 4,
    sayLegs: function () {
        console.log(`This dog has ${this.numLegs} legs.`);
    }
};
dog.sayLegs(); // This dog has 4 legs.

我认为,将箭头函数与闭包或回调函数一起使用更可取。 对于类/对象方法或构造函数,我选择使用常规函数。