2016-05-21 4 views
0

このOpenLayers 3クラスは、ol.geom.Geometryを拡張しています。私は、例えばol.geom.Pointのコンストラクタ名前を知りたいので、私は実行します。JavaScript - クラス名を取得

ol.geom.Point.name 

しかし、私は、私はインスタンスを作成し、コンストラクタ名を取得しようとしても、何も得る:

var p = new ol.geom.Point([0,0]); p.constructor.name; 

ol.geom.Pointの実装はhereです。

ol.geom.Point = function(coordinates, opt_layout) {...} 

この動作を再現するには、jsfiddleを実行してください。

はMDNからドキュメントを読む:ES6機能を実装

ブラウザは、その構文上の位置から 無名関数の名前を推測することができます。例:

var f = function(){}; console.log(f.name); // "f"

私は間違っているか何が欠けているのですか?

ありがとうございます!

+0

これをどのブラウザでテストしていますか。私が知っている限り、f.nameはFirefoxでのみサポートされています。 –

+0

私はFirefoxでテスト中です。 –

+0

なぜコンストラクタ名が必要なのか不思議です。カスタムプロパティを設定する場合は、 'ol.geom.Point#setProperties'を使用してください。 –

答えて

2

シナリオでこのようなnameプロパティにアクセスするには、「匿名関数の推測名」を使用することを意味します。執筆時点では、これはまだ公開されていないのChrome 51のリリースでのみサポートされています。

これはおそらく読んでいるMDNドキュメントに記載されています。下のブラウザの互換性表を参照し、「匿名関数の推論名」のサポートを参照してください。ブラインドスポット - 、JavaScriptのだ

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Function/name

+0

あなたのアンサーにはありがとうございますが、私はクロム51でテストしましたが、結果はありませんでした。 –

-1

。以下のようなものの要求


var f = function() {}; 
    console.log(f.name); // to return: 
>> f 

は何も悪いことではありません。さらに、人間の視点から見ると、このような自然なことが求められますが、マシンの観点からは、この作業のような簡単なことをするには直感的ではありません。おそらく、愛。それはかなり醜いパッチを必要とするかもしれません。

は&(それはプリミティブや本格的なオブジェクトを指していますかどうかに関係なく、変数)、任意のポインタを依頼することを可能にしなければならないだろう、ということこうその変数名は - 何ですか? しかし、あなたが問題になるより: - それは、現在の状態ハンドルでポインタ名を戻すか、元の初期割り当てだけを戻すべきですか?もしそうなら、他の人はどうですか?

私はそれが大好きです。しかし、私は疑いがある、それはかなりの時間の間そうなるつもりはない...

関連する問題