2015-05-12 10 views
6

Ich habe eine kurze Frage. Was ist der sauberste und einfachste Weg, private Mitglieder in ES6-Klassen zu deklarieren? Es ist nicht viel anders als für die KlassenES6-Klassen private Member-Syntax

Mit anderen Worten, wie

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

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

als

class MyClass { 

    // ??? 

    publicFunction() { 
    return 1; 
    } 
} 
+0

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

+0

Danke, Dan, dass ziemlich viel meine Frage beantwortet –

Antwort

4

zu implementieren. Der Körper der Konstruktor-Funktion wird einfach der Körper von constructor:

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

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

Natürlich publicFunction auch eine echte Methode, wie in Ihrem Beispiel sein könnte, wenn es zu privateFunction keinen Zugriff benötigen.

Ich rate nicht besonders, dies zu tun (ich bin gegen pseudo private Eigenschaften aus verschiedenen Gründen), aber das wäre die einfachste Übersetzung Ihres Codes.

+1

In der Theorie, wahr Privatsphäre wird in ES7 sein. –

+0

Wahre Privatsphäre über Syntax vielleicht, aber Sie können bereits echte Privatsphäre über WeakMaps erhalten. – loganfsmyth