2010-09-14 9 views
2

J'installe mes objets javascript comme les suivantsvariables privées non statiques en javascript

Object1 = function() { 
    var privateMember = "private value" 

    return { 
    publicMember: "public value" 
    setPrivateMember: function(value) { 
     privateMember = value; 
    } 
    } 
}(); 

Maintenant, si j'utilise l'héritage prototypique pour créer de nouveaux objets

Object2.prototype = Object1 

Et puis définissez le privé Le membre

Object2.setPrivateMember("new value"); 

Ensuite, la valeur du membre privé dans l'objet 1 change également, de sorte qu'il se comporte plus comme un poste. variable tic. Y a-t-il un moyen pour que les variables privées ne soient pas statiques? PS - Je suis un programmeur autodidacte donc mon utilisation de la terminologie peut être un peu sommaire. Faites-moi savoir si cela doit être clarifié

+1

devraient utiliser 'Object2.prototype = Object1()', ou est-ce juste une faute de frappe dans le code collé? – MooGoo

+0

duplication possible de [Variables privées dans les prototypes hérités] (http://stackoverflow.com/questions/3617139/private-variables-in-inherited-prototypes) –

Répondre

2

Vous créez une variable globale. Mettez var avant.

var privateMember = "private value";
+1

C'était une faute de frappe dans ma question. Le problème persiste même quand j'utilise var – wheresrhys

2

Édité ma réponse, pouvez-vous vérifier si cela fonctionne?

Essayez ceci -

Object1 = function() { 
    var privateMember = "private value"; 

    var returnVal = { 
       publicMember: "public value", 
       setPrivateMember: function(value) { 
       privateMember = value; 
       } 

      }; 
    return returnVal; 
}();