1

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

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

但是当我这样做时,ID 将设置为“匿名”。我真的很想给这样一个函数一个 ID 用于调试目的;这就是您在控制台记录此类函数(类)的实例时显示的 id。有没有办法做到这一点?

4

2 回答 2

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

演示

于 2012-07-15T07:37:33.943 回答
0

简短的回答:没有。

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

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

function MyClass(...) {

请注意,无论如何,一些开发人员工具(如 Chrome 网络检查器)对此非常聪明,MyClass即使您这样定义它也会显示:

var MyClass = function() {...
于 2012-07-15T07:04:28.030 回答