Classes JavaScript et portée variable

Je suis relativement nouveau à JS et je vais avoir correctement des questions de l'émulation de la programmation orientée objet principes.

Je suppose que j'ai deux questions. Question la première est en ce qui concerne les nombreuses façons de déclarer des variables.

Dire que j'ai une classe:

function clazz(a)
{
    this.b = 2;
    var c = 3;
    this.prototype.d = 4; //or clazz.prototype.d = 4?
}

var myClazz = new clazz(1); 

Suis-je correct dans les évaluations suivantes:

a est une variable privée qui est l'instance spécifique (c'est à dire les différentes instances de clazz sera unique et indépendant des variables 'a'). Il peut être consulté à partir de clazz comme: 'a'.

b est une variable publique est en instance spécifique. Il peut être consulté à partir de clazz comme cela.b' et de l'extérieur clazz comme " myClazz.b'.

c est une variable privée qui est statique, ou une classe spécifique (c'est à dire les différentes instances de clazz partagent la même " c " de la variable). Il peut être consulté à partir de n'importe quelle instance de clazz que 'c' et les changements dans l'instance de clazz sont reflétées dans toutes les instances de clazz.

d est une variable publique est statique/classe spécifique. Il peut être consulté à partir de n'importe où par l'intermédiaire du 'clazz.le prototype.d' ou 'myClazz.le prototype.d'.

L'ensemble du problème que j'ai avec ma compréhension de la variable système est qu'il n'y a pas de façon de déclarer une variable privée qui n'est PAS statique (c'est à dire une version unique pour chaque instance de la classe).

La deuxième question est à l'égard de différents types de déclarations de classe.

J'ai été en utilisant:

var MySingleton = new function() {...};

pour créer des singletons. Est-ce correct? Je suis également pas sûr de l'effet de la "nouvelle" mot-clé à cette situation ainsi que l'ajout () la fonction accolades à la fin de la déclaration de la manière suivante:

var MySingleton = new function() {...}();

J'ai été en utilisant ce modèle de déclarer une classe et puis instancier les instances de cette classe:

function myClass() {...};
var classA = new myClass();
var classB = new myClass();

Est-ce la bonne méthode?

source d'informationauteur Cmc