Javascript 如何确定函数是否会返回未执行的子函数

Javascript 如何确定函数是否会返回未执行的子函数,javascript,function,eval,Javascript,Function,Eval,在单页应用程序开发的上下文中,我需要将字符串转换为可执行函数 var repo = {}; 我使用了两种格式的字符串: repo.toto = "function toto(){\ alert('Hello, I am toto');\ }"; repo.titi = "function titi(){\ this.sub1 = function() {};\ this.sub2 = function() {};\ this.sub3 = function()

在单页应用程序开发的上下文中,我需要将字符串转换为可执行函数

var repo = {};
我使用了两种格式的字符串:

repo.toto = "function toto(){\
    alert('Hello, I am toto');\
}";

repo.titi = "function titi(){\
    this.sub1 = function() {};\
    this.sub2 = function() {};\
    this.sub3 = function() {};\
}";
我想知道一个函数一旦执行,是否会给出子函数的对象

下面是一个完整的例子来说明我的问题<代码>评估不是解决方案

var createFunc = function(name) {
    var string = repo[name];
    var func = Function("return new "+string+"");
    repo[name] = func;
};

typeof repo.toto; //string
typeof repo.titi; //string

createFunc('toto');
createFunc('titi');

typeof repo.toto; //function
typeof repo.titi; //function

repo['toto'](); //alert('Hello, I am toto');
//Object {}

repo['titi']();
//Object { sub1: anonymous/titi/this.sub1(), sub2: anonymous/titi/this.sub2(), sub3: anonymous/titi/this.sub3() }
你知道一种确定函数是否给出空对象的方法吗
(如“toto”示例)或不(如“titi”示例),无需执行该功能?

我同意这不可能适用于所有场景

但对于两个样本输入,主要区别在于一个具有属性,而另一个没有

请注意,使用
returnnew
可以从字符串实例化函数并返回新实例。直接在函数内部的任何代码都将被执行(像构造函数一样),结果将成为属性和方法的对象。所以这就是第一个返回空对象的原因


如果没有任何
this.(something)=
,您可以判断它是否返回空对象。但这可能不是最好的解决方案,我看不出它有什么用处。

。顺便说一句,您正在构建的那些函数都使用它
eval
确实在这里看起来更合适(你只需要稍后用
new
调用它们)。好吧,我想我需要继续我的设计。。。谢谢你在停顿的问题下面划线谢谢你的回答。当你说“你能告诉”时,你是说“用正则表达式”?用正则表达式是可能的,是的。但请记住,这只是一个想法,并不能保证适用于所有情况,我的重点是解释所提供的代码发生了什么。