首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当我将JavaScript函数的名称作为字符串(使用具有重载参数的参数)时,如何执行该函数

当我将JavaScript函数的名称作为字符串(使用具有重载参数的参数)时,如何执行该函数
EN

Stack Overflow用户
提问于 2021-03-25 04:09:15
回答 1查看 32关注 0票数 1

我尝试根据传入的变量(scamId和actorId)调用某个函数,唯一的问题是,当我尝试将intent2作为参数传入时,它似乎无法从我的存储库中找到所需的内容。我从How to execute a JavaScript function when I have its name as a string得到了这个小的函数构建器脚本,我已经将它用于其他一些事情,它工作得很好,但是我不确定如何传入intent2并让它正确地创建函数。当语句没有像if intent2 = "stuff“那样被重载时,它就会起作用,但当我使用下面的格式时就不起作用了。

例如,return语句等同于如果一切工作正常-

代码语言:javascript
复制
return this.intentS1A1Repository.findOne({where: { intent: intentBase }});
代码语言:javascript
复制
    const info = this

    // how can I format this intent2 so that it works?
    const intent2 = { 
      where: 
      { intent: intentBase }
    }

    const getIntent = "intentS" + scamId + "A" + actorId + "Repository.findOne";
    
    await getIntentFunctionBuilder(getIntent, info, intent2);
    
    async function getIntentFunctionBuilder(functionName: string, context: any, args: any) {
      args = Array.prototype.slice.call(arguments, 2);
      var namespaces = functionName.split(".");
      var func = namespaces.pop();
      for(var i = 0; i < namespaces.length; i++) {
        context = context[namespaces[i]];
      }
    
      return await context[func].apply(context, args);  
    }

任何帮助都将不胜感激!

EN

回答 1

Stack Overflow用户

发布于 2021-03-25 06:36:07

好的,我想出了它,而不是使用那个疯狂的函数,它实际上要简单得多。

代码语言:javascript
复制
    const intent2 = { 
      where: 
      { intent: intentBase }
    }

    const object = "intentS" + scamId + "A" + actorId + "Repository";
    return await this[object]["findOne"](intent2)

这个小代码片段可以接受重载的参数作为参数,这非常棒。它允许您传入自定义构建的函数,因此您不必使用20个不同的函数来执行基本上完全相同的任务。返回值恰好是这样:

代码语言:javascript
复制
return this.intentS*A*Repository.findOne(intent2);

希望你不需要经历我做过的事情来解决这个问题。祝好运。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66788600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档