如何转换' apply'致电'或者另一个

时间:2016-07-16 07:18:20

标签: javascript

我需要替换方法适用于呼叫或其他。

Class Solution 
    attr_reader :analyzers;

    def initialize()
      @analyzers = Array[];
    end

    def analyze_file()
      count = 0;

      f = File.open('test.txt')

      #* Create an array of LineAnalyzers for each line in the file

      f.each_line { |line| la = LineAnalyzer.new(line, count) }
          @analyzers.push la;
          count += 1;   
      end
    end
end

当然,aParams必须是一个数组。

我该怎么做?

我等你的意见

3 个答案:

答案 0 :(得分:1)

对于.apply应该使用参数作为数组, 但是在.call中使用参数作为参数。

var aParams = ['aParam1','aParam2'];

this[aType].apply(this, aParams);

this[aType].call(this,aParams[0],aParams[1]);

如果其n

for (var i = 0; i < aParams .length; i++) {
  (function(i) {

  }).call(this , aParams[i]);
}

答案 1 :(得分:1)

我无法真正联系到你真正需要它的原因,正如其他用户所指出的那样。但是如果你需要它,我会说这是一个有趣的问题需要解决。您可能对ES6模块中Spreadrest运算符的强大功能感兴趣。

检查如何使用此处的调用函数发送参数数组:

function abc(x, y) {
  console.log(x, y);
}
var a = [1, 4];
abc.call(this, ...a)

答案 2 :(得分:0)

将参数传递给调用函数

this[aType].call(this, aParams[0],aParams[1],aParams[2])