2015-05-12 24 views
6

Ho una domanda veloce. Qual è il modo più semplice e chiaro per dichiarare membri privati ​​all'interno delle classi ES6?sintassi membro privato classi ES6

In altre parole, come implementare

function MyClass() { 
    var privateFunction = function() { 
    return 0; 
    }; 

    this.publicFunction = function() { 
    return 1; 
    }; 
} 

come

class MyClass { 

    // ??? 

    publicFunction() { 
    return 1; 
    } 
} 
+0

http://stackoverflow.com/questions/27849064/how-to-implement-private-method-in-es6-class-with-traceur –

+0

Grazie, Dan, che praticamente risponde alla mia domanda –

risposta

4

Non è molto diverso per le classi. Il corpo della funzione di costruzione diventa semplicemente il corpo di constructor:

class MyClass { 
    constructor() { 
    var privateFunction = function() { 
     return 0; 
    }; 

    this.publicFunction = function() { 
     return 1; 
    }; 
    } 
} 

Naturalmente publicFunction potrebbe anche essere un vero e proprio metodo come nel tuo esempio, se non ha bisogno di accesso a privateFunction.

Non sto particolarmente raccomandando di farlo (sono contrario alle proprietà pseudo privat per vari motivi), ma questa sarebbe la traduzione più semplice del tuo codice.

+1

In teoria, vero la privacy sarà in ES7. –

+0

Vera privacy tramite sintassi forse., Ma è già possibile ottenere una vera privacy tramite WeakMaps. – loganfsmyth

Problemi correlati