Accessing this in a forEach loop results in undefined

后端 未结 3 948
不思量自难忘°
不思量自难忘° 2020-11-30 06:21

I\'m iterating through an array using forEach in one of my Class\'s methods. I need access to the instance of the class inside the forEach but this is undef

3条回答
  •  轻奢々
    轻奢々 (楼主)
    2020-11-30 06:44

    In strict mode if you call a function not through a property reference and without specifying what this should be, it's undefined.

    forEach (spec | MDN) allows you to say what this should be, it's the (optional) second argument you pass it:

    aGlobalVar.thing.prototype.amethod = function() {
      data.forEach(function(d) {
        console.log(d);
        console.log(this.value);
      }, this);
      // ^^^^
    }
    

    Alternately, arrow functions were added to JavaScript in 2015. Since arrows close over this, we could use one for this:

    aGlobalVar.thing.prototype.amethod = function() {
      data.forEach(d => {
        console.log(d);
        console.log(this.value);
      });
    }
    

提交回复
热议问题