2014-09-11 7 views
12

CoffeeScript ha tale zucchero sintassi:interrogativo sintassi da CoffeeScript senza CoffeeScript

item.getFoo?().fooParam?.bar 

che si traduce in lunga javascript equivalente con getFoo==null e fooParam==null controlli. La domanda è: ci sono dei modi per usare questa sintassi in vanilla javascript con una libreria/traduttore/compilatore diversa da CoffeeScript? Utilizziamo Traceur nel nostro progetto, ma non ha tale sintassi perché non è conforme a ES6 (anche se lo desidero). Forse un modo per implementarlo all'interno della forcella Traceur?

+0

hai provato a sborsare esso? dove sono i problemi? –

+0

Sembra essere troppo difficile per me imparare i meccanismi interni di Traceur solo per implementare questa piccola funzione. – artch

+0

sì, l'ho guardato e sembra davvero complicato. Stai eseguendo javascript compilato sul client o stai spedendo il compilatore al client? (hai un '

1

Ho avuto questa stessa domanda di recente, e sono venuto qui sperando in una soluzione migliore di quella attuale. Se stai facendo questo di frequente, è più facile fare una funzione di farlo per voi:

var qm = function(arg) { 
    if (arg instanceof Object) return arg; 
    return function(){}; 
}; 

Poi per usarlo, si avvolge gli oggetti in essa per assicurarsi che nessun errore viene generato. Comincia a sembrare brutto se ci sono molti q Uestion m arche su una linea

qm(qm(item.getFoo)().fooParam).bar 
+0

Appena realizzato che questo si rompe completamente quando il contesto ('questo') entra in gioco. – willlma