2017-03-23 12 views
0

によって構築クラスの名前を取得、私はこのは私が名前空間内で作業する必要がある匿名関数

var my_namespace = {} 

my_namespace.my_class = function() {} 

var instance = new my_namespace.my_class(); 

を作ると言うそして、私が直面してる現在の問題は、「instance.constructor.nameを返すということです"(空文字列)。

私は理論的には、私はinstanceofを使用することによって、それを回避してevalの可能性があり、このような「文字列」または「アレイ」または「my_namespace.my_class」

としての可能性の配列に対してそれを比較することで、インスタンスの種類を確認したいです私はあまり揮発性のない方法を探しています。

+0

コンストラクタに名前プロパティを設定しますか? – Orangesandlemons

+0

いいえinstance.constructorを使用して直接参照を取得できますが、それは匿名関数なので、名前を取得する方法はありません。 – callback

+0

私は 'this.className =" Name "をコンストラクタに置くようなことをもっと考えていたので、instance.classNameはタイプ – Orangesandlemons

答えて

3

匿名機能を使用していないとお考えですか?ような何か:

var my_namespace = {}; 
 
my_namespace.my_class = function MyClass() {}; 
 
var instance = new my_namespace.my_class(); 
 

 
console.log(instance.constructor.name);

2

は、単にそれが匿名にしない:

var my_namespace = { 
    my_class: function() {} 
}; 
var instance = new my_namespace.my_class(); 
console.log(instance.constructor.name) // "my_class" - since ES6 at least 

しかし、関数名に頼ることは軽蔑的な方法であることがわかり、それは非常に多くの方法で失敗する可能性があります。タグが本当に必要な場合は、明示的に使用してください。

+1

を与えます。"本当にタグが必要な場合は、明示的に使用してください。はい、それを行う! –

関連する問題