0

I am trying to add an .each() method to a JS class declaration. However, I think the two this keywords are conflicting. Attempts to return the class variable using this returns undefined.

class MyClass{
  constructor(parameterA, parameterB){
    this.parameterA = parameterA;
    this.myClassMethod = this.myClassMethod.bind(this);
  }

  myClassMethod(){
    $('.class').each(function(){
      console.log(this.parameterA); //Returns undefined
    }
  }

}

var test = MyClass(parameterA, parameterB);
auto
  • 1,062
  • 2
  • 17
  • 41

1 Answers1

0

Try binding the each function to the class context.

class MyClass{
  constructor(parameterA, parameterB){
    this.parameterA = parameterA;
  }

  myClassMethod(){
    $('.class').each(function(){
      console.log(this.parameterA); // Should log 'a'
    }.bind(this));
  }

}

$(function() {
  const test = new MyClass('a', 'b');
  
  test.myClassMethod();
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="class">
</div>
<div class="class">
</div>
<div class="class">
</div>
<div class="class">
</div>
<div class="class">
</div>
idream1nC0de
  • 1,171
  • 5
  • 13