2012-06-03 14 views
9

Apparirà il seguente avviso "Foo" in tutti i browser, anche se min.?Ottenere il nome di una classe coffeescript?

class Foo 

alert(Foo.name) 

Nulla si afferma nel documento, so che IE ha problemi con i nomi delle funzioni, e sono confuso con le molte questioni aperte su questo, come anyoftheseissues!

+0

Codice miniato WRT: dipende in realtà dal minificatore e dalla configurazione che si passa ad esso. La maggior parte può essere configurata per non toccare le istruzioni di funzione denominate (come '--no-mangle-functions' di UglifyJS), quindi la proprietà' name' dovrebbe funzionare correttamente (a meno che il browser non la supporti affatto). Naturalmente, con la proprietà CoffeeScript definisce manualmente dal 1.3.3, dovrebbe sempre funzionare indipendentemente dalla minificazione (come aggiunta come proprietà letterale stringa semplice) – shesek

risposta

8

che possono dipendere su quale versione del compilatore CoffeeScript stai usando. Nell'ultima versione stabile (1.3.3), una proprietà "nome" non viene generata per impostazione predefinita.

class Foo 

compila in

var Foo; 
Foo = (function() { 
    function Foo() {} 
    return Foo; 
})(); 

Poiché la proprietà name non è standard e attualmente non supportata da IE, non si può davvero contare su di esso cross-browser. Informazioni dettagliate su questo sono disponibili presso il MDN: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/Name

+0

Stai suggerendo che una versione successiva o precedente genererebbe una proprietà nome? C'è anche qualche flag che sovrascrive questo default o devi aggiungere tu stesso la proprietà. –

+0

Penso che sia stato effettivamente rimosso, quindi nelle versioni precedenti si potrebbe ancora trovare questo comportamento, sì. – Niko

9

dall'interno di qualsiasi metodo della classe Foo che è incluso in Foo.prototype, è possibile inserire la linea

console.log @constructor.name 

e scriverà

Foo 

al registro della console. HTH.

+3

Ora è chiaro (vedere la fine di https://github.com/jashkenas/coffee-script/issues/2052) che non è supportato. Vai e chiedilo se lo vuoi anche tu! –

Problemi correlati