我可以使用以下命令在javascript中动态创建函数:
var MyClass = new Function("console.log('Hello World!');");
但是当我这样做时,ID将设置为“匿名”。 我真的想给这样一个函数一个ID用于调试目的;这是你在console.log这个函数(类)的实例时显示的id。 有没有办法做到这一点?
答案 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
答案 1 :(得分:0)
简答:不。
更长的答案:不可能,甚至没有设置function.name
。老实说,我甚至没有看到这一点,因为Function
构造函数是用于动态创建的临时动态函数。所以把它们放在viariables上就可以了。
如果您希望它们具有名称,因为您正在创建类,请使用语法
function MyClass(...) {
请注意,无论如何,一些开发人员工具(如Chrome网络检查员)对此非常了解,即使您按照以下方式定义,也会显示MyClass
:
var MyClass = function() {...