2009-08-31 6 views
10

j'aime apprendre la différence entre la classe de la propriété et le prototype en Javascript ce que je veux dire est indiqué dans le code:différence entre les propriétés de la classe et la fonction prototype en Javascript

function Rectangle(x, y) { 
    this.width = x; 
    this.height = y; 
} 

Rectangle.UNIT = new Rectangle(1, 1); 

Rectangle.prototype.UNIT = new Rectangle(1, 1); 

La chose que je sais est le prototype fonctionne comme hériter l'objet qui signifie UNIT sera montré toutes les instances à partir de maintenant, mais le code Rectangle.UNIT = new Rectangle(1, 1); ne fait pas la même chose?

Répondre

19

Rectangle.UNIT est une propriété de classe statique. Il ne peut être accédé que sur l'objet de classe Rectangle. Il ne sera pas accessible sur les instances de Rectangle.

Rectangle.prototype.UNITRectangle.prototype.UNIT est une propriété prototype et est accessible sur les instances de Rectangle.

Si vous faites une classe Square qui hérite de Rectangle, toutes les instances de Squarepartageront la même propriété prototype, mais pas les propriétés statiques de classe.

Vous pouvez trouver ces articles utiles (mais peut-être un peu obscure):

+0

Pouvez-vous nous en dire un peu plus à ce sujet: "Les propriétés statiques peuvent varier entre les classes qui partagent une chaîne d'héritage prototypique donnée." – Tarik

+0

J'ai édité ma réponse pour clarifier et corriger. –

1

Rectangle.UNIT est comme un membre statique de classe, alors que Rectangle.prototype.UNIT est un membre local. On dirait que vous voulez Rectangle.UNIT dans votre cas, car vous n'avez besoin que d'une instance statique de l'objet.

Questions connexes