首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CoffeeScript通过带参数的字符串执行函数

CoffeeScript通过带参数的字符串执行函数
EN

Stack Overflow用户
提问于 2013-05-26 22:33:49
回答 1查看 363关注 0票数 0

在我的html中有这样的东西:

代码语言:javascript
复制
<input type="text" data-validators="length(5,25);notNull();links(1);" />

函数: length、notNull和links在我的验证类中。我正在使用jQuery获取这些函数

代码语言:javascript
复制
  $(this).find('[data-validation]').each ->
    validatorsString = $(this).attr "data-validation"
    validatorsArray = validatorsString.split ";"
    validatorsObject = new Validation($(this).val())
    for v in validatorsArray
      if typeof validatorsObject[v] == "function"
        validatorsObject[v]

当我不使用参数(arg1,arg2)但现在我想使用参数时,这种方法工作得很好。如何检查类中是否存在这些函数并使用参数执行(没有限制,可以是1,5,10个参数)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-26 23:57:43

由于不能以字符串形式动态调用带参数的函数(除非使用eval),要实现所需的功能,最好的方法是解析data-validation信息:

给定此字符串:validatorsString="length(5,25);notNull();links(1);",您可以使用正则表达式将其解析为函数名和参数:

代码语言:javascript
复制
validatorsString.replace(/([\w_$]+)\(([\w_$,]+)\)/g, (all, fn, args) ->
  args = args.split ',' if args
  if typeof validatorsObject[fn] is 'function'
    validatorsObject[fn].apply validatorsObject, args
)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16760246

复制
相关文章

相似问题

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