有没有一种方法可以在javascript中动态地为匿名函数命名?

有没有一种方法可以在javascript中动态地为匿名函数命名?,javascript,Javascript,我想这样做的原因有点复杂,但长话短说,你可以做window[myString]=function hello(){}。有没有办法执行var hello=function[myString](){} 我之所以要这样做,是因为我正在用javascript创建一个类生成器。问题是,我只能给我分配构造函数的变量命名,实际上我不能给类本身命名。因此,如果实例化我生成的类的一组实例,chromedev工具不知道该实例是什么,因此它调用对象(匿名函数),而不是它的类名。这真让我头疼 这是一个我正在尝试做的例

我想这样做的原因有点复杂,但长话短说,你可以做
window[myString]=function hello(){}
。有没有办法执行
var hello=function[myString](){}


我之所以要这样做,是因为我正在用javascript创建一个类生成器。问题是,我只能给我分配构造函数的变量命名,实际上我不能给类本身命名。因此,如果实例化我生成的类的一组实例,chromedev工具不知道该实例是什么,因此它调用对象(匿名函数),而不是它的类名。这真让我头疼

这是一个我正在尝试做的例子。复制并粘贴到Chrome的开发工具中:

function Person(name){this.name=name;};
Person.initChildClass=function(className,talkMethod){
    window[className]=function(){Person.apply(this,arguments)}
    window[className].prototype.talk=talkMethod;
}
Person.initChildClass("PoliceMan",function(){alert("I am a police man")});
Person.initChildClass("LittleBoy",function(){alert("googoogaagaa");});
var cop=new PoliceMan("Bob");
cop;
将我的代码复制并粘贴到开发工具(Chrome)中,您将看到它显示的是window(匿名函数),而不是Cop的“Cop”。我怎样才能让它说“警察”?

试试看

func.displayName = "whatever";

但它可能不适用于所有浏览器。请参阅:

“有没有办法实现
var hello=function[myString]({}
?”-您可以使用
eval()
…可能可以使用字符串和
eval()
。不幸的是,这里没有什么希望:谢谢……似乎没有浏览器(chrome、firefox或safari)使用displayName作为类名。Firefox和Safari只是说Object(我猜他们根本没有把类名放在那里),chrome仍然说window(匿名函数)。从这个联系来看,这仍然是他们正在整理的东西。