2012-06-03 80 views
9

即使縮小,所有瀏覽器都會提示「Foo」嗎?在doc獲取coffeescript類的名稱?

class Foo 

alert(Foo.name) 

沒有什麼是說,我知道,IE瀏覽器有功能名稱的問題,我很困惑與許多問題開了這一點,像anyoftheseissues!

+0

WRT縮小代碼 - 它確實取決於縮小器和您傳遞給它的配置。大多數可以配置爲不接觸命名函數語句(如UglifyJS的'--no-mangle-functions'),所以'name'屬性應該在那裏工作得很好(除非瀏覽器根本不支持它)。當然,使用CoffeeScript從1.3.3版本開始手動定義的屬性,它應該始終工作而不管縮小(因爲它被添加爲純字符串文字屬性) – shesek

回答

8

這可能取決於在哪個版本的CoffeeScript編譯器上使用。在最新的穩定版本(1.3.3)中,默認情況下不會生成「name」屬性。

class Foo 

編譯成

​​

由於name屬性是非標準和IE瀏覽器目前不支持,你不能真正依靠它跨瀏覽器。關於這個的詳細信息,請在MDN:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/Name

+0

您是否暗示過後期或舊版本會生成名稱屬性?還有一些標誌將覆蓋此默認值,或者您是否必須自己添加屬性。 –

+0

我認爲它已經被刪除了,所以在舊版本中你可能仍然會發現這種行爲,是的。 – Niko

9

從包含在Foo.prototypeFoo類的任何方法中,你可以插入行

console.log @constructor.name 

,它會返回

Foo 

到您的控制檯日誌。 HTH。

+3

現在已經清楚(見https://github.com/jashkenas/coffee-script/issues/2052末尾),它不被支持。如果你想要的話,去問問吧! –