【问题标题】:Pass a string as a parameter in JS在JS中传递一个字符串作为参数
【发布时间】:2021-08-31 18:11:30
【问题描述】:

这很简单,我正在尝试插入一个具有字符串作为参数的值。 我们举个例子: const stringName = "User"。 我的目标是激活一个会被这样调用的函数 User.find(); 我尝试了以下操作但没有成功:stringName.find() 但没有成功,还有[stringName].find()

我为什么要这样做:我收到一个字符串 param,我想在我的数据库中使用这个参数进行搜索,所以真正的查询会是这样的:param.findAll({where....})

我确信有一个类似上述示例的简单解决方案。希望得到帮助。

【问题讨论】:

  • 您可能需要编辑字符串原型
  • 我该怎么做?
  • 您是否已经在User.find 定义了一个函数?如果没有,我不明白你想要完成什么。如果是,则可能有比您尝试的方式更好的方法来解决您的问题(这将是非常hacky)
  • @Ethanolle 这是一个示例,其中有人将trim 方法添加到所有字符串(在它成为标准之前)。 stackoverflow.com/questions/11231827/…
  • @A_A 编辑问题给你更多解释

标签: javascript node.js


【解决方案1】:

您可以将User 存储在一个对象中,然后用字符串访问它。

const myObjects = {
  User: User,
  // Post: Post, ...
}
const stringName = "User"
myObjects[stringName].find('foo')

【讨论】:

    【解决方案2】:

    你可能可以这样做:

    let fncName(clsName) {
     if(window[clsName]) {
       let cls = new window[clsName]();
       cls.find();
     }
    }
    

    但是,这需要您调用的所有类都具有一个名为 find 的函数。可能最好对传入的字符串进行切换并从那里开始。

    let fncName(clsName) {
      
      switch(clsName) {
       
        case 'User': 
          User.find();
        default:
           ...
      }
    }
    

    【讨论】:

      【解决方案3】:

      除非在字符串原型中定义 find() 方法,否则不能简单地对字符串执行 .find()

      如果您的目标是执行某个对象的某些方法,并且您将获得该对象的名称作为字符串。

      如果该对象在您当前的上下文中可用:

      const param = "User";
      this[param].find()

      如果对象在当前上下文中不可用:

      let objectMap = {
        "user": USER
      };
      let param = "user";
      objectMap[param].find();

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-07-17
        • 1970-01-01
        • 1970-01-01
        • 2021-05-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多