将方法hide / show传递给另一个方法

时间:2017-10-04 12:32:34

标签: javascript jquery string methods

我在我的代码中以两种方式调用对象方法:

@app.task(name='celery.ping') def ping(): # type: () -> str """Simple task that just returns 'pong'.""" return 'pong' ;

start_worker

我将隐藏和显示条件作为字符串传递,稍后进行评估并用作方法。请注意条件:if(效果==='显示/隐藏')。

this.reveal.updateVisuals(i, 'show')

然而代码似乎是重复的,我想知道是否有办法将hide或show作为方法传递给方法并在需要时将其应用于数组。我试过这样的事情:

this.reveal.updateVisuals(ⅰ).show

3 个答案:

答案 0 :(得分:2)

有很多方法可以用来简化这个,这里有几个:

updateVisuals: function (time, effect) {
  if (this.breakpointsMap && typeof this.breakpointsMap[checkTime] !== "undefined") {
      this.breakpointsMap[checkTime].forEach(e => e[effect]());
  }
}

或者返回数组:

updateVisuals: function (time, effect) {
  if (this.breakpointsMap && typeof this.breakpointsMap[checkTime] !== "undefined") {
      return this.breakpointsMap[checkTime];
  }else{
      return [];
  }
}

this.reveal.updateVisuals(i).forEach(e => e.show());

答案 1 :(得分:1)

您可以使用[方括号]表示法通过它的(字符串)名称访问方法属性。

updateVisuals: function (time, effect) {
  // Check if parameter exists and property can be read
  if (this.breakpointsMap && typeof this.breakpointsMap[checkTime] !== "undefined") {
    var k = this.breakpointsMap[checkTime].length;
    while (k--) {
      try {
        this.breakpointsMap[checkTime][k][effect]();
      } catch (err) {}
    }
  }
}

答案 2 :(得分:0)

如果您使用的是Es6,则可以执行以下操作:

    function updateVisuals  (time, effect) {
    // Check if parameter exists and property can be read
        if (this.breakpointsMap && typeof this.breakpointsMap[checkTime] !== "undefined") {
            let execFn= (arrindex) => breakpointsMap[checkTime][arrindex].show();
            if (effect === 'hide') 
            { 
                execFn = (arrindex) => breakpointsMap[checkTime][arrindex].hide();
            }     
                // display the items that were fast forwarded
                var k = this.breakpointsMap[checkTime].length;
                while (k--) {
                try {
                    execFn(k);
                } catch (err) {}
            }
        }
    }

我假设var checkTime是全局的或者是闭包的。如果您使用的是版本较低的tan es6,则可以使用execFn = function(arrindex){...},然后在调用方法后绑定此参数。