jQuery .each()“ this”关键字与JS Class“ this”关键字

时间:2019-07-08 17:52:31

标签: javascript jquery class oop object

我试图将.each()方法添加到JS类声明中。但是,我认为两个this关键字存在冲突。尝试使用this返回类变量将返回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);

1 个答案:

答案 0 :(得分:0)

尝试将each函数绑定到类上下文。

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>