2011-09-05 15 views
5

He realizado una gran cantidad de programación en JavaScript/JQuery.Cuándo debería usar "prototype" en JavaScript

Pero nunca utilicé "prototype". De hecho, no tengo idea de lo que significa.

¿Tiene un ejemplo práctico cuando es útil?

+5

Podría significar 2 cosas: un marco de JavaScript y un método de JavaScript para extender y definir objetos. Los dos son completamente diferentes. No estoy seguro de cuál de los dos te refieres. –

+0

Esta pregunta es ambigua. La lib o la propiedad obejcts? – user278064

+1

Probablemente deberías leer: [MDN - Introducción a JavaScript orientado a objetos] (https://developer.mozilla.org/En/Introduction_to_Object-Oriented_JavaScript). –

Respuesta

9

ejemplo más simple:

function Foo() { 
    this.bar = function() { 
     return 42; 
    } 
} 

Ahora usted puede crear tantas instancias de Foo como desee y llame bar():

var a = new Foo(); 
var b = new Foo(); 

Incluso aunque ambos objetos tienen bar() método que es exactamente el mismo en ambos casos, estos son métodos distintos. De hecho, cada nuevo objeto Foo tendrá una nueva copia de este método.

Por otro lado:

function Foo() {} 
Foo.prototype.bar = function() { 
    return 42; 
}  

tiene el mismo resultado final pero la función se almacena sólo una vez en objeto prototype en lugar de en un objeto en sí mismo. Esto puede ser un factor decisivo si crea toneladas de instancias Foo y desea guardar algo de memoria.

2

Suponiendo que se preguntan acerca Object.prototype,

Todos los objetos en JavaScript son descendientes de objetos; todos los objetos heredan métodos y propiedades de Object.prototype, aunque pueden anularse. Por ejemplo, los prototipos de otros constructores anulan la propiedad del constructor y proporcionan sus propios métodos toString. Los cambios en el objeto prototipo de objeto se propagan a todos los objetos a menos que las propiedades y métodos sujetos a esos cambios se anulen más a lo largo de la cadena de prototipos.

Leer this y probablemente this

Cuestiones relacionadas