2012-06-03 10 views
9

すべてのブラウザで、次のアラート「Foo」は縮小されても表示されますか?coffeescriptクラスの名前を取得していますか?

class Foo 

alert(Foo.name) 

何もドキュメントに記載されていない、私はIEが関数名に問題があることを知っている、と私は多くの問題が依存してもよいoftheseissues!

+0

WRTのコードを小さくしました - 本当に、それを渡す構成と構成に依存します。大部分は、名前付き関数文(UglifyJSの '--no-mangle-functions'など)に触れないように設定できるので、' name'プロパティはうまく動作するはずです(ブラウザがそれをまったくサポートしていない場合を除く)。もちろん、CoffeeScriptが1.3.3から手動で定義したプロパティでは、それは縮小化に関係なく常に機能するはずです(プレーンな文字列リテラルプロパティとして追加されたものとして) – shesek

答えて

8

anyのように、このことについてオープンして混乱しています使用しているCoffeeScriptコンパイラのバージョン。最新の安定リリース(1.3.3)では、デフォルトで "name"プロパティは生成されません。

class Foo 

nameプロパティは非標準と現在IEでサポートされていないので、あなたが本当にそれクロスブラウザに依存することはできません

​​

にコンパイル。 Foo.prototypeに含まれているクラスFooのいずれかの方法の中からhttps://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/Name

+0

後のバージョンまたは古いバージョンでは名前プロパティが生成されると思いますか?また、この既定値をオーバーライドするフラグや、プロパティを自分で追加する必要があります。 –

+0

私はそれが実際に削除されていると思います。したがって、古いバージョンではまだこの動作が見つかるかもしれません。 – Niko

9

は、あなたがライン

console.log @constructor.name 

を挿入することができ、それが

Foo 
を書きます。これについての詳細な情報は、MDNで入手できます。

をコンソールログに追加します。 HTH。

+3

これはサポートされていないことが明確になりました(https://github.com/jashkenas/coffee-script/issues/2052の末尾を参照)。もしあなたもそれが欲しいなら、行きなさい。 –

関連する問題