4

javascriptでクラス自体の中でクラスの名前を取得することは可能ですか? 私のミドルウェアで動的に作成されたクラスの再帰に役立ちます。これは非常に不適切な投稿だったと思います。解決したい問題をより適切に定義します。

MyClass = function(){
  this.classname = ??? // Here is required and needed to store as a property
}

MyClass.prototype.log = function(){
   alert(this.classname); // The alert should be MyClass
}


var myClassObj = new MyClass();
myClassObj.log();
4

2 に答える 2

3

あなたはおそらくこれを探しています:

function MyClass() {};
var myInstance = new MyClass();
console.log(myInstance.constructor.name === "MyClass");
// true

これを機能させるには、 を使用せずに、上記のように関数を宣言する必要がありますMyClass = function(){}。次に、name関数のプロパティが使用され、プロトタイプ チェーンが活用されます (constructorプロパティのクエリ時)。

コンストラクターで直接アクセスする必要がある場合は、コンストラクター参照も使用します。

function MyClass() { console.log(this.constructor.name === "MyClass"); };
var myInstance = new MyClass();
// true

この質問は同様のトピックを扱っていますが、あなたにも役立つかもしれません: Javascript関数参照から文字列として名前を取得しますか?

于 2013-05-11T18:22:15.970 に答える
1

「クラス」が適切に定義されている場合、クラス オブジェクトには、クラス オブジェクトへの参照であるコンストラクター プロパティがあります。

function A() {
  alert(this instanceof this.constructor);
}
var a = new A();

コンソールで A.prototype を調べることができます

console.dir(A.prototype)

指図

于 2013-05-11T18:20:32.707 に答える