是否可以动态创建一个在javascript中具有ID的函数

时间:2012-07-15 07:01:45

标签: javascript function dynamic anonymous

我可以使用以下命令在javascript中动态创建函数:

var MyClass = new Function("console.log('Hello World!');");

但是当我这样做时,ID将设置为“匿名”。 我真的想给这样一个函数一个ID用于调试目的;这是你在console.log这个函数(类)的实例时显示的id。 有没有办法做到这一点?

2 个答案:

答案 0 :(得分:1)

您可以通过创建这样的create函数来完成此操作:

var create = (function() { 
    var id = 0;

    return function(f) {
        return eval('(function id' + (id++) + (f + '').substr(8) + ')' );
    };
})();

var a = create(function() { alert(0); });
var b = create(function() { alert(1); });

alert(a); // function id0() { alert(0); }
alert(b); // function id1() { alert(1); }
a();      // 0
b();      // 1

DEMO

答案 1 :(得分:0)

简答:不。

更长的答案:不可能,甚至没有设置function.name。老实说,我甚至没有看到这一点,因为Function构造函数是用于动态创建的临时动态函数。所以把它们放在viariables上就可以了。

如果您希望它们具有名称,因为您正在创建类,请使用语法

function MyClass(...) {

请注意,无论如何,一些开发人员工具(如Chrome网络检查员)对此非常了解,即使您按照以下方式定义,也会显示MyClass

var MyClass = function() {...