【问题标题】:JQuery .each() "this" keyword vs JS Class "this" keyword [duplicate]JQuery .each()“this”关键字与JS类“this”关键字[重复]
【发布时间】:2019-11-18 06:44:39
【问题描述】:

我正在尝试将 .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);

【问题讨论】:

  • 它记录 undefined 因为匿名的每个函数都没有绑定到类上下文。
  • 好吧,each() 中的this 指的是每个循环中的当前项,而不是类this

标签: javascript jquery class oop object


【解决方案1】:

尝试将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>

【讨论】:

    猜你喜欢
    • 2012-09-10
    • 2019-11-20
    • 2013-03-20
    • 2016-05-16
    • 1970-01-01
    • 1970-01-01
    • 2013-10-14
    • 2020-06-21
    • 1970-01-01
    相关资源
    最近更新 更多