Javascript 对象在应用程序脚本中变为函数

Javascript 对象在应用程序脚本中变为函数,javascript,google-apps-script,Javascript,Google Apps Script,我的应用程序脚本web应用程序中有此代码,我想帮助理解它。基本上,代码帮助我将部分视图加载到web应用程序中。在下面的代码中,它帮助从我的后端加载呈现搜索视图HTML。以下是要启动的代码: function loadView(options) { var id = typeof options.id === 'undefined' ? "app" : options.id; var callback = typeof options.callback ===

我的应用程序脚本web应用程序中有此代码,我想帮助理解它。基本上,代码帮助我将部分视图加载到web应用程序中。在下面的代码中,它帮助从我的后端加载呈现搜索视图HTML。以下是要启动的代码:

function loadView(options) {
    var id = typeof options.id === 'undefined' ? "app" : options.id;
    var callback = typeof options.callback === 'undefined' ? function(){} : options.callback
    google.script.run.withSuccessHandler(function(html) {
      document.getElementById(id).innerHTML = html
      typeof options.params === 'undefined' ? callback() : callback(options.params)
    })[options.func]()
  }

  function loadSearchView() {
    loadView({func: 'loadSearchView',
              callback: setDataForSearch})
  }
我知道底部的loadSearchView()函数触发顶部的loadView()函数并发送一个对象。在该对象内部有一个键:值对,称为: { func.“loadSearchView”, }

因此,代码随后激活另一个“loadSearchView()”,这是一个在web应用程序后端触发的函数,导致搜索部分HTML

我不明白的是:

  • 为什么顶部的loadView()函数不遵循google.script.run.withSuccessHandler().options.func()和点符号的模式;相反,它只在放在方括号中时起作用,如:google.script.run.withSuccessHandler()options.func
  • 其次,当放在方括号中时,如何简单地将()添加到末尾以使itoptions.func激活后端函数,但在选项对象中存储相同的函数语法(如下面所示)不起作用
  • 我希望我已经讲清楚了。了解这一点将有助于我继续发展

    谢谢,

    服务器端函数是
    google.script.run
    对象的属性。当属性的名称已知且为硬编码时,可以使用点表示法访问属性,但也可以始终使用括号表示法访问属性,将属性的名称作为文本字符串


    代码将运行服务器端函数,其名称由
    object.func
    表达式给出,该表达式的计算结果很可能是包含函数名称的文本字符串。后面的括号
    ()
    使JavaScript引擎将其作为函数运行,而不仅仅是返回属性,在本例中,属性是作为文本字符串的函数代码。

    这很有趣。我不知道。谢谢
    function loadSearchView() {
        loadView({func: loadSearchView(),
                  callback: setDataForSearch})
      }