2009-08-31 15 views
10

me gusta aprender la diferencia entre la clase de propiedades y Prototipo en Javascript que me refiero se muestra en el código:diferencia entre las propiedades de clase y prototipo de función 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); 

Lo que sé es prototipo está trabajando como heredar objeto que significa UNIT se mostrará todas las instancias a partir de ahora, pero el código Rectangle.UNIT = new Rectangle(1, 1); no hace lo mismo?

Respuesta

19

Rectangle.UNIT es una propiedad de clase estática. Solo se puede acceder al objeto de clase Rectangle. No será accesible en ninguna instancia de Rectángulo.

Rectangle.prototype.UNIT es una propiedad prototipo y se puede acceder en instancias de Rectángulo.

Si realiza una clase que hereda de SquareRectangle, cualquier caso de Squarecompartirán la misma propiedad prototipo, pero no propiedades estáticas de la clase.

Usted puede encontrar estos artículos útiles (aunque quizás un poco oscura):

+0

Puede elaborar esto un poco más por favor: "Las propiedades estáticas pueden variar entre las clases que comparten una cadena de herencia de prototipo dada". – Tarik

+0

He editado mi respuesta para aclararla y corregirla. –

1

Rectangle.UNIT es como un miembro de la clase estática, mientras Rectangle.prototype.UNIT es un miembro local. Parece que quiere Rectangle.UNIT en su caso, porque solo necesita una instancia estática del objeto.

Cuestiones relacionadas