1

以下を使用して、JavaScript で動的に関数を作成できます。

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

しかし、それを行うと、ID は「匿名」に設定されます。デバッグ目的で、このような関数に ID を付けたいと思います。これは、そのような関数 (クラス) のインスタンスを console.log するときに表示される 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.nameFunction正直なところ、コンストラクターは動的に作成される一時的なオンザフライ関数用であるため、要点さえわかりません。それらを viariables に配置すれば完了です。

クラスを作成しているために名前を付けたい場合は、構文を使用します

function MyClass(...) {

いずれにせよ、一部の開発者ツール (Chrome Web インスペクタなど) はそれについて非常に賢く、MyClass次のように定義しても表示されることに注意してください。

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