相关疑难解决方法(0)

箭头功能和此

我正在尝试ES6,并希望在我的函数中包含一个属性,就像这样

var person = {
  name: "jason",

  shout: () => console.log("my name is ", this.name)
}

person.shout() // Should print out my name is jason
Run Code Online (Sandbox Code Playgroud)

但是,当我运行此代码控制台时只记录日志my name is.我究竟做错了什么?

javascript this ecmascript-6 arrow-functions

19
推荐指数
3
解决办法
8492
查看次数

箭头函数将其作为窗口对象返回

在我的程序中,使用function()语法返回this目标元素的值,但是使用箭头函数返回window对象。这两个功能分别如何获得this

function editTemplates() {

//sits within for loop

    clocksTemplate.gmt[i].addEventListener('keydown', (e) => {
      console.log(this); //returns window object
    });

    clocksTemplate.gmt[i].addEventListener('keydown', function(e) {
      console.log(this); //returns element bound to clocksTemplate.gmt
    });
Run Code Online (Sandbox Code Playgroud)

根据带有箭头功能的MDN,这应“从封闭的上下文中保留原始含义”。封闭上下文是事件侦听器吗?或它位于其中的功能?根据我的测试,箭头功能的封闭上下文必须是Window对象,但我看不到如何。使用function()语法,封闭函数旨在重新定义此值,我假设它在方法中正在执行此操作。这个主题在这里这里已经进行了深入的讨论,但是我是JS新手,我不明白这对我的问题的影响。addEventListener

javascript this

1
推荐指数
1
解决办法
1349
查看次数

标签 统计

javascript ×2

this ×2

arrow-functions ×1

ecmascript-6 ×1