如何访问匿名函数内的javascript类属性是同一个类

时间:2017-07-13 17:33:19

标签: javascript class properties scope

我有一个javascript(es2015)类我想更新$ .each调用的函数中数组的值。但是在构建中,myarr是未定义的。我假设thiseach函数内引用了传递给each的匿名函数。如何访问myarr的课程内容?

class mycl{
  constructor(){
     this.myarr=[];
  }
  build(d){
    $.each(d,function(d,i){
      let myd = ..... // Do some stuff with the data
      this.myarr.push(myd);      
    });
  }
}

3 个答案:

答案 0 :(得分:1)

您是否尝试过在每个函数中使用bind?像这样:

class mycl{

  constructor(){
     this.myarr=[];
  }
  build(d){
    $.each(d,function(d,i){
      let myd = ..... // Do some stuff with the data
      this.myarr.push[myd];      
    }).bind(this);
  }
}

答案 1 :(得分:0)

创建一个构建器函数,该函数是Mycl的函数,并调用它而不是使用anon函数。

class mycl{
  constructor(){
     this.myarr=[];
  }
  builder(d,i){
      // let myd = ..... // Do some stuff with the data
      this.myarr.push(myd);      
  },
  build(d){ $.each(d,this.builder);  }
}

答案 2 :(得分:0)

您需要在变量中保留对类的引用,如下所示:

{
    "splitting": {
        "percentBegin": 0,
        "percentEnd": 70,
        "complement": false,
        "strategy": "sequential"
    }
}