首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用“function”解析字符串的Javascript

使用“function”解析字符串的Javascript
EN

Stack Overflow用户
提问于 2012-10-11 22:29:29
回答 3查看 2.6K关注 0票数 1

我有以下字符串,需要使用JS进行解析。

代码语言:javascript
运行
复制
function () {\n     MyClass.prototype.doSomethingFunction();\n       5-6 lines of coding\n  }

我试着解析它,修剪空格和换行符,但对我来说都不起作用。请告诉我如何从上面的字符串中获取函数名(doSomethingFunction)。

我如何获得这个字符串:

我有一个存储函数的队列。稍后,我的代码从这个队列中选择一个函数(这里是一些逻辑)并执行它们。它对我来说完全没问题。但我只想打印出函数的名称!它就像'(classOBJ.myFunctionsQueuen)()‘用来执行一个函数,该函数存储在myFunctionsQueue数组的第n个位置。有意义还是我做错了什么?

谢谢曼恩

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-11 22:42:04

尝试如下所示的reg表达式匹配

代码语言:javascript
运行
复制
var str = "function() {\n MyClass.prototype.doSomethingFunction();\n 5 - 6 lines of coding\n}";

var matches = str.match(/prototype\.(.+?)\(\)/);
if(matches){
    alert(matches[1]);
}
票数 2
EN

Stack Overflow用户

发布于 2012-10-11 22:47:42

首先,如果您正在执行存储为字符串的函数,您可能做错了(使用evalnew Function(body))。不能使用对象作为队列,函数名作为键,函数引用(而不是字符串)作为值吗?如下所示:

代码语言:javascript
运行
复制
var queue = {
    "funcName" : function() { /* do something */ },
    "otherFunc" : function() { /* do something else */ }
    /* etc. */
};

然后您可以打印循环中的所有名称和execute all函数,例如:

代码语言:javascript
运行
复制
for(var key in queue) {
    console.log(key); // function name
    queue[key]();     // execute function
}
票数 0
EN

Stack Overflow用户

发布于 2012-10-11 22:49:17

我不认为这对于您的应用程序来说是正确的方法,但是当前的问题可以通过如下方式来解决

代码语言:javascript
运行
复制
myFunctionString.split("\n").reduce(function(map, line) {
    if (/^\s*[^\s[\]]+\(\);?\s*$/.test(line))
        map.push(line.split(".").pop().replace(/\(\);?\s*$/, ""));
    return map;
}, []);
// returns an array of invoked method names
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12841946

复制
相关文章

相似问题

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