2016-10-14 13 views
5

Jestem nowicjuszem w JavaScript (tj. Uczenie JavaScript POPRAWNIE). Czytam sekcję „Zmienne statyczne prywatne” w profesjonalnej JavaScript dla Web deweloperów 3rd Edition w rozdziale 7.Statyczne zmienne prywatne w JavaScript

został mi przedstawiony z tego kodu, ale czuję, że nie jest idealny:

(function(){ 

    //private variables and functions 
    var privateVariable = 10; 

    function privateFunction(){ 
     return false; 
    } 

    //constructor 
    MyObject = function(){ 
    }; 

    //public and privileged methods 
    MyObject.prototype.publicMethod = function(){ 
     privateVariable++; 
     return privateFunction(); 
    }; 
})(); 

W tym przypadku polegają one na tworzeniu MyObject jako zmiennej globalnej, pomijając "var". Jednak w trybie ścisłym nie można pominąć słowa kluczowego var, a ten kod spowodowałby błąd.

Czy mój przepis byłby poprawny?

var MyObject = (function(){ 

    //private variables and functions 
    var privateVariable = 10; 

    function privateFunction(){ 
     return false; 
    } 

    var MyObject = function(){ 
    } 

    //public and privileged methods 
    MyObject.prototype.publicMethod = function(){ 
     privateVariable++; 
     return privateFunction(); 
    }; 

    return MyObject; 
})(); 

Jestem zdezorientowany tym, dlaczego książka pominęłaby rozwiązanie tego problemu i podejście z leniwą metodologią. Jestem mocno wierzą w używanie "trybu ścisłego" dla całego mojego kodu.

+4

To pytanie prawdopodobnie należy na co http://codereview.stackexchange.com - ale uważam swoje przepisać obiektywnie bardziej poprawnie niż przykład z książki. – Mic

+5

Twoja wersja jest w porządku. Ta książka jest dość stara; 4 lata to ogromna ilość czasu w świecie technologii internetowych. – Pointy

+0

Przepraszamy! Był mój pierwszy wpis na stackoverflow. Jeśli ktoś mógłby przenieść go do odpowiedniej lokalizacji, która byłaby świetna! –

Odpowiedz