有没有办法在javascript中动态地给匿名函数一个名字?

时间:2014-11-08 01:17:36

标签: javascript

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


我想这样做的原因是因为我在javascript中创建了一个类生成器。问题是,我只能命名我赋予构造函数的变量,我实际上无法命名类本身。因此,如果实例化我生成的类的一堆实例,chrome dev工具不知道实例是什么,因此它调用对象(匿名函数)而不是其类名。这真的磨砺了我的齿轮。

这是我正在尝试做的一个例子。复制并粘贴到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)中,您会看到它显示窗口。(匿名函数)而不是警察的“警察”。如何让它说“警察”?

1 个答案:

答案 0 :(得分:1)

尝试

func.displayName = "whatever";

但它可能无法在所有浏览器中使用。请参阅Function.displayName:和same thing in Chromium