标签: this template-literals
我注意到,如果在模板文字中,则“ this”关键字不起作用。是正常的还是我的代码有问题?
let dog = { name: "Spot", numLegs: 4, sayLegs: () => `This dog has ${this.numLegs} legs.` }
输出为“这只狗的腿没有定义。”,只有当我用文字对象名称代替它时,它才起作用
答案 0 :(得分:0)
根据MDN,箭头函数不会绑定自己的this。
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.
我认为,将箭头函数与闭包或回调函数一起使用更可取。 对于类/对象方法或构造函数,我选择使用常规函数。