来自字符串的链式方法

时间:2016-10-01 11:27:04

标签: javascript google-apps-script method-chaining

在与Google电子表格相关联的脚本项目中,我想编写一个从一系列单元格中提取数据的函数。有多个extraction methods对应不同的数据类型,即getValuesgetBackgrounds等。

通常的调用方法是:

var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('mysheet')
var A1 = 'A1:A2'
var values = sheet.getRange(A1).getValues()

然而,这发生在函数内部,我想让用户在函数调用中确定提取方法,如下所示:

var r = myfunction(arg1, arg2, extractionMethod = 'getValues')

所以我需要能够使用extractionMethod(即它包含的字符串)来调用方法。

我试过了:

var values = sheet.getRange(A1).window[extractionMethod]
  

TypeError:无法读取属性" getValues"来自undefined。 (第31行,文件"有趣")

我也试过

var values = sheet.getRange(A1)[extractionMethod]

但是Logger.log(values)只是给出了

  

[16-10-01 04:09:15:014 PDT] function getBackgrounds(){/ *   * /}

我想要实现的目标:使用字符串'getValues'(或其他有效方法名称)的函数调用,相当于调用,例如

var values = sheet.getRange(A1).getValues()

1 个答案:

答案 0 :(得分:1)

使用括号可以访问对象的属性。 如果是你定义一个像这样的对象:

var obj = {
  x: 1,
  m: function() {
    return this.x * 2;
  }
};

您可以xobj.x获得obj['x']obj['m']将为您提供方法m,如果您想致电m,则需要添加括号,obj.m()obj['m']()