SlideShare una empresa de Scribd logo
1 de 33
Descargar para leer sin conexión
Programación orientada a
objetos
con JavaScript
¿Qué es el prototype?
en JavaScript
¿Qué es el prototype?
Las funciones son objetos que tienen
propiedades (arguments, prototype y
constructor) y métodos (call() y apply())
¿Qué es el prototype?
prototype es una propiedad que tiene toda
función y es de tipo objeto. En un inicio es un
objeto vacío.
¿Qué es el prototype?
Por medio de la propiedad prototype podemos
añadir métodos y propiedades a la función de
clase o constructor.
¿Qué es el prototype?
El prototipo solo se utiliza cuando utilizas a la
función como función constructora.
Añadir propiedades al
prototipo
JavaScript
Añadir propiedades al prototype
Cuando creas una función como constructora
por medio de “new”, puedes hacer referencia
al mismo por medio de “this” (la cual no es
una variable).
Añadir propiedades al prototype
A las propiedades añadidas con “this” se les
conoce como “own properties”.
A las propiedades añadidas con “prototype” se
les conoce como “prototype properties”.
Añadir propiedades al prototype
TANQUE
Own properties
this.balas;
this.vidas;
this.energia;
Prototype properties
prototype.x;
prototype.y;
prototype.angulo;
Usar propiedades y
métodos del prototipo
JavaScript
Usar propiedades y métodos del prototipo
Como el prototipo es un objeto, cualquier
modificación la pueden visualizar todas las
instancias, incluso si fueron creadas antes de
la modificación al prototipo.
Usar propiedades y métodos del prototipo
Todo lo que se encuentre en el prototipo se
pasa “por referencia”, por lo tanto, no se
duplica en cada instancia.
En cambio en las “own properties” si se
duplican en cada instancia.
Usar propiedades y métodos del prototipo
TANQUE
Own
properties
this.balas;
this.vidas;
this.energia;
Prototype
properties
avanza()
dispara()
explota()
tanque1
this.balas;
this.vidas;
this.energia;
tanque3
this.balas;
this.vidas;
this.energia;
tanque2
this.balas;
this.vidas;
this.energia;
Propiedades del objeto y
propiedades del prototipo
JavaScript
Prioridades del prototipo
JS primero busca en la función la propiedad, y
si no existe la busca en el objeto prototype.
Si hay una propiedad de la función y una
propiedad en el objeto prototype, la
propiedad de la función tiene precedencia.
Prioridades del prototipo
Si eliminas la propiedad de la función (own
properties), aparecerá la propiedad prototype.
A esto se le conoce como
“cadena de prototipos”
o
“property chain”
Sobreescribir propiedades
de la función
JavaScript
Sobreescribir propiedades
Para que sepamos si la propiedad es de la
función o del prototipo, tenemos el método
hasOwnProperty().
Sobreescribir propiedades
Si borramos una propiedad de la función,
JavaScript nos regresará la propiedad del
prototipo.
Visualizar el contenido del
prototipo
JavaScript
Visualizar el contenido del prototipo
Por medio de un ciclo for...in podemos
enlistar todas las propiedades de un objeto.
Por medio de l función hasOwnProperty()
sabemos si son propiedades del objeto (true) o
del objeto prototype (false).
Visualizar el contenido del prototipo
Para saber si una variable es enumerable
(visible en el for..in) utilizamos el método
propertyIsEnumerable();
isPrototypeOf()
JavaScript
El método isPrototypeOf()
El método isPrototypeOf() nos indica si un
objeto es prototipo de otro.
Regresa un valor booleano si son prototipos o
un falso si no.
__proto__
Prototype
Todos los objetos en JavaScript tienen una
propiedad prototype que es otro objeto.
En JavaScript, los objetos heredan por medio
de la propiedad prototype.
El prototipo del objeto Object es el eslabón
más alto en la cadena de prototipos.
Prototype
Cualquier objeto hereda de Object.prototype.
La relación entre el objeto y la clase que le
hereda es “__proto__”
No es buena idea usarla porque no es
compatible (IE)
Prototype
prototype pertenece a la función constructora
__proto__ pertenece a las instancias
Un sustituto de __proto__ es Object.
getPrototypeOf()
pero sólo corre en ES5, no en ES3.
Prototype
Modificar objetos
preestablecidos
Modificar los objetos predefinidos
Podemos añadir propiedades o métodos a los
objetos propios de JS como Array, Object,
Function, etc.
Douglas Crockford
cadena de prototipos o “prototype chaining”
Links
https://www.packtpub.
com/packtlib/book/Web%
20Development/9781847194145/5

Más contenido relacionado

La actualidad más candente

Fundamentos POO en JS. Mixins y Traits.
Fundamentos POO en JS. Mixins y Traits.Fundamentos POO en JS. Mixins y Traits.
Fundamentos POO en JS. Mixins y Traits.Maximiliano Fierro
 
Metodos Constructor Y Destructor
Metodos Constructor Y DestructorMetodos Constructor Y Destructor
Metodos Constructor Y Destructorrezzaca
 
2.android java
2.android   java2.android   java
2.android javaguidotic
 
Introducción a la programación orientada a objetos con JavaScript
Introducción a la programación orientada a objetos con JavaScriptIntroducción a la programación orientada a objetos con JavaScript
Introducción a la programación orientada a objetos con JavaScriptFrancisco Javier Arce Anguiano
 
Metodos Get y Set, finalmente revelados.
Metodos Get y Set, finalmente revelados.Metodos Get y Set, finalmente revelados.
Metodos Get y Set, finalmente revelados.Juan Carlos Espinoza
 
Java clases dictadas
Java clases dictadasJava clases dictadas
Java clases dictadasGaloGabriel
 
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez.NET UY Meetup
 
Proyecto en android completado
Proyecto en android completadoProyecto en android completado
Proyecto en android completadoKai Exo
 
Metodologia para resolver problemas con Programacion orientada a Objetos
Metodologia para resolver problemas con Programacion orientada a ObjetosMetodologia para resolver problemas con Programacion orientada a Objetos
Metodologia para resolver problemas con Programacion orientada a ObjetosWilliam Diaz S
 
16 17 tecnologias python oop
16 17 tecnologias python oop16 17 tecnologias python oop
16 17 tecnologias python oopSoftware Guru
 
Manual netlogo basico insisoc
Manual netlogo basico insisocManual netlogo basico insisoc
Manual netlogo basico insisocGaby Martz
 
02 python Programación orientada a objetos y funcional
02 python Programación orientada a objetos y funcional02 python Programación orientada a objetos y funcional
02 python Programación orientada a objetos y funcionalJuan Rodríguez
 

La actualidad más candente (20)

Fundamentos POO en JS. Mixins y Traits.
Fundamentos POO en JS. Mixins y Traits.Fundamentos POO en JS. Mixins y Traits.
Fundamentos POO en JS. Mixins y Traits.
 
Metodos Constructor Y Destructor
Metodos Constructor Y DestructorMetodos Constructor Y Destructor
Metodos Constructor Y Destructor
 
Constructores en Java
Constructores en JavaConstructores en Java
Constructores en Java
 
2.android java
2.android   java2.android   java
2.android java
 
Introducción a la programación orientada a objetos con JavaScript
Introducción a la programación orientada a objetos con JavaScriptIntroducción a la programación orientada a objetos con JavaScript
Introducción a la programación orientada a objetos con JavaScript
 
Metodos Get y Set, finalmente revelados.
Metodos Get y Set, finalmente revelados.Metodos Get y Set, finalmente revelados.
Metodos Get y Set, finalmente revelados.
 
Unidad 3: Herencia Ejercicio 1
Unidad 3: Herencia Ejercicio 1Unidad 3: Herencia Ejercicio 1
Unidad 3: Herencia Ejercicio 1
 
Java clases dictadas
Java clases dictadasJava clases dictadas
Java clases dictadas
 
Unidad 3 CLASES, OBJETOS E INTSANCIAS
Unidad 3 CLASES, OBJETOS E INTSANCIASUnidad 3 CLASES, OBJETOS E INTSANCIAS
Unidad 3 CLASES, OBJETOS E INTSANCIAS
 
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
 
Serializacion
SerializacionSerializacion
Serializacion
 
Proyecto en android completado
Proyecto en android completadoProyecto en android completado
Proyecto en android completado
 
Poo 1
Poo 1Poo 1
Poo 1
 
Metodologia para resolver problemas con Programacion orientada a Objetos
Metodologia para resolver problemas con Programacion orientada a ObjetosMetodologia para resolver problemas con Programacion orientada a Objetos
Metodologia para resolver problemas con Programacion orientada a Objetos
 
Programación Orientada a Objetos para Python
Programación Orientada a Objetos para PythonProgramación Orientada a Objetos para Python
Programación Orientada a Objetos para Python
 
Java colecciones
Java coleccionesJava colecciones
Java colecciones
 
03 java poo_parte_2
03 java poo_parte_203 java poo_parte_2
03 java poo_parte_2
 
16 17 tecnologias python oop
16 17 tecnologias python oop16 17 tecnologias python oop
16 17 tecnologias python oop
 
Manual netlogo basico insisoc
Manual netlogo basico insisocManual netlogo basico insisoc
Manual netlogo basico insisoc
 
02 python Programación orientada a objetos y funcional
02 python Programación orientada a objetos y funcional02 python Programación orientada a objetos y funcional
02 python Programación orientada a objetos y funcional
 

Similar a La propiedad prototype en la programación orientada a objetos con JavaScript

Introducción a la Programaciónen Java
Introducción a la Programaciónen JavaIntroducción a la Programaciónen Java
Introducción a la Programaciónen Javasantosisidrorivera
 
05. Creando e implementando objetos y métodos
05. Creando e implementando objetos y métodos05. Creando e implementando objetos y métodos
05. Creando e implementando objetos y métodosDanae Aguilar Guzmán
 
Poo Java
Poo JavaPoo Java
Poo Javaeccutpl
 
Todo lo que un desarrollador no puede desconocer de javascript tutorial j q...
Todo lo que un desarrollador no puede desconocer de javascript   tutorial j q...Todo lo que un desarrollador no puede desconocer de javascript   tutorial j q...
Todo lo que un desarrollador no puede desconocer de javascript tutorial j q...Marcelino Ortiz
 
OOP.JAVAS pjs
OOP.JAVAS pjsOOP.JAVAS pjs
OOP.JAVAS pjsJona Val
 
Php orientado a_objetos
Php orientado a_objetosPhp orientado a_objetos
Php orientado a_objetosJose Ney Quil
 
Tema 4 clases_y_objetos
Tema 4 clases_y_objetosTema 4 clases_y_objetos
Tema 4 clases_y_objetosBelenMonse
 
El Mal Odiado Javascript
El Mal Odiado JavascriptEl Mal Odiado Javascript
El Mal Odiado Javascriptguest030dc2
 
Java morld cap2 [CURSO JAVA]
Java morld cap2 [CURSO JAVA]Java morld cap2 [CURSO JAVA]
Java morld cap2 [CURSO JAVA]Hack '
 
programacion orientada a objetos
programacion orientada a objetosprogramacion orientada a objetos
programacion orientada a objetosjent46
 
El Mal Odiado Javascript
El Mal Odiado JavascriptEl Mal Odiado Javascript
El Mal Odiado JavascriptEl Jota
 

Similar a La propiedad prototype en la programación orientada a objetos con JavaScript (20)

Guia poo
Guia pooGuia poo
Guia poo
 
Introducción a la Programaciónen Java
Introducción a la Programaciónen JavaIntroducción a la Programaciónen Java
Introducción a la Programaciónen Java
 
05. Creando e implementando objetos y métodos
05. Creando e implementando objetos y métodos05. Creando e implementando objetos y métodos
05. Creando e implementando objetos y métodos
 
8.Clases y objetos Java
8.Clases y objetos Java8.Clases y objetos Java
8.Clases y objetos Java
 
Poo Java
Poo JavaPoo Java
Poo Java
 
Todo lo que un desarrollador no puede desconocer de javascript tutorial j q...
Todo lo que un desarrollador no puede desconocer de javascript   tutorial j q...Todo lo que un desarrollador no puede desconocer de javascript   tutorial j q...
Todo lo que un desarrollador no puede desconocer de javascript tutorial j q...
 
OOP.JAVAS pjs
OOP.JAVAS pjsOOP.JAVAS pjs
OOP.JAVAS pjs
 
Php orientado a_objetos
Php orientado a_objetosPhp orientado a_objetos
Php orientado a_objetos
 
Tema 4 clases_y_objetos
Tema 4 clases_y_objetosTema 4 clases_y_objetos
Tema 4 clases_y_objetos
 
Java
JavaJava
Java
 
El Mal Odiado Javascript
El Mal Odiado JavascriptEl Mal Odiado Javascript
El Mal Odiado Javascript
 
Java morld cap2 [CURSO JAVA]
Java morld cap2 [CURSO JAVA]Java morld cap2 [CURSO JAVA]
Java morld cap2 [CURSO JAVA]
 
Guia poo
Guia pooGuia poo
Guia poo
 
Clase 6 objetos de javaScript
Clase 6 objetos de javaScriptClase 6 objetos de javaScript
Clase 6 objetos de javaScript
 
Javascript
JavascriptJavascript
Javascript
 
programacion orientada a objetos
programacion orientada a objetosprogramacion orientada a objetos
programacion orientada a objetos
 
Conceptos basicos POO
Conceptos basicos POOConceptos basicos POO
Conceptos basicos POO
 
El Mal Odiado Javascript
El Mal Odiado JavascriptEl Mal Odiado Javascript
El Mal Odiado Javascript
 
Javascript OOP
Javascript OOPJavascript OOP
Javascript OOP
 
Javascript objetos
Javascript objetosJavascript objetos
Javascript objetos
 

Más de Francisco Javier Arce Anguiano

El nuevo objeto para internacionalización y localización Intl
El nuevo objeto para internacionalización y localización IntlEl nuevo objeto para internacionalización y localización Intl
El nuevo objeto para internacionalización y localización IntlFrancisco Javier Arce Anguiano
 
Nuevas características de los objetos en JavaScript ES6
Nuevas características de los objetos en JavaScript ES6Nuevas características de los objetos en JavaScript ES6
Nuevas características de los objetos en JavaScript ES6Francisco Javier Arce Anguiano
 
La programación orientada a objetos con JavaScript ES6
La programación orientada a objetos con JavaScript ES6La programación orientada a objetos con JavaScript ES6
La programación orientada a objetos con JavaScript ES6Francisco Javier Arce Anguiano
 
HTML5 API WebSQL Database: DML: Data Manipulation Language
HTML5 API WebSQL Database: DML: Data Manipulation LanguageHTML5 API WebSQL Database: DML: Data Manipulation Language
HTML5 API WebSQL Database: DML: Data Manipulation LanguageFrancisco Javier Arce Anguiano
 
Crear el perfil provisional para desarrollar aplicaciones iOS
Crear el perfil provisional para desarrollar aplicaciones iOSCrear el perfil provisional para desarrollar aplicaciones iOS
Crear el perfil provisional para desarrollar aplicaciones iOSFrancisco Javier Arce Anguiano
 

Más de Francisco Javier Arce Anguiano (20)

El nuevo objeto para internacionalización y localización Intl
El nuevo objeto para internacionalización y localización IntlEl nuevo objeto para internacionalización y localización Intl
El nuevo objeto para internacionalización y localización Intl
 
El nuevo tipo de datos "símbolo" o "symbol"
El nuevo tipo de datos "símbolo" o "symbol"El nuevo tipo de datos "símbolo" o "symbol"
El nuevo tipo de datos "símbolo" o "symbol"
 
Nuevas características de los objetos en JavaScript ES6
Nuevas características de los objetos en JavaScript ES6Nuevas características de los objetos en JavaScript ES6
Nuevas características de los objetos en JavaScript ES6
 
Nuevos Métodos en ES6
Nuevos Métodos en ES6Nuevos Métodos en ES6
Nuevos Métodos en ES6
 
Objetos de propagación o ...spread
Objetos de propagación o ...spreadObjetos de propagación o ...spread
Objetos de propagación o ...spread
 
Mejoras en las expresiones regulares
Mejoras en las expresiones regularesMejoras en las expresiones regulares
Mejoras en las expresiones regulares
 
Valores por default en argumentos
Valores por default en argumentosValores por default en argumentos
Valores por default en argumentos
 
Literales octales y binarias:
Literales octales y binarias: Literales octales y binarias:
Literales octales y binarias:
 
La programación orientada a objetos con JavaScript ES6
La programación orientada a objetos con JavaScript ES6La programación orientada a objetos con JavaScript ES6
La programación orientada a objetos con JavaScript ES6
 
HTML5 API WebSQL Database: DML: Data Manipulation Language
HTML5 API WebSQL Database: DML: Data Manipulation LanguageHTML5 API WebSQL Database: DML: Data Manipulation Language
HTML5 API WebSQL Database: DML: Data Manipulation Language
 
HTML5 API WebSQL Database: Funciones de agregado
HTML5 API WebSQL Database: Funciones de agregadoHTML5 API WebSQL Database: Funciones de agregado
HTML5 API WebSQL Database: Funciones de agregado
 
WebSQl DataBase HTML5-dql - data query language
WebSQl DataBase HTML5-dql - data query languageWebSQl DataBase HTML5-dql - data query language
WebSQl DataBase HTML5-dql - data query language
 
Las etiquetas estructurales en html5
Las etiquetas estructurales en html5Las etiquetas estructurales en html5
Las etiquetas estructurales en html5
 
Los metadatos de HTML5
Los metadatos de HTML5Los metadatos de HTML5
Los metadatos de HTML5
 
El doctype de HTML5
El doctype de HTML5El doctype de HTML5
El doctype de HTML5
 
Historia de HTML5
Historia de HTML5Historia de HTML5
Historia de HTML5
 
SQLite y PHP: DQL - data query language
SQLite y PHP: DQL - data query languageSQLite y PHP: DQL - data query language
SQLite y PHP: DQL - data query language
 
Introducción a SQLite 3 y PHP
Introducción a SQLite 3 y PHPIntroducción a SQLite 3 y PHP
Introducción a SQLite 3 y PHP
 
Crear el perfil provisional para desarrollar aplicaciones iOS
Crear el perfil provisional para desarrollar aplicaciones iOSCrear el perfil provisional para desarrollar aplicaciones iOS
Crear el perfil provisional para desarrollar aplicaciones iOS
 
Identificar el dispositivo para desarrollar en iOS
Identificar el dispositivo para desarrollar en iOSIdentificar el dispositivo para desarrollar en iOS
Identificar el dispositivo para desarrollar en iOS
 

Último

Las redes sociales en el mercado digital
Las redes sociales en el mercado digitalLas redes sociales en el mercado digital
Las redes sociales en el mercado digitalNayaniJulietaRamosRa
 
12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdf12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdfedwinmelgarschlink2
 
02. Mr. Spencer (T.L. Sawn).pdf.libro de un señor
02. Mr. Spencer (T.L. Sawn).pdf.libro de un señor02. Mr. Spencer (T.L. Sawn).pdf.libro de un señor
02. Mr. Spencer (T.L. Sawn).pdf.libro de un señorkkte210207
 
TIPOS DE LA PSICOPATOLOGÍA DE LA PERCEPCIÓN.pdf
TIPOS DE LA PSICOPATOLOGÍA DE LA PERCEPCIÓN.pdfTIPOS DE LA PSICOPATOLOGÍA DE LA PERCEPCIÓN.pdf
TIPOS DE LA PSICOPATOLOGÍA DE LA PERCEPCIÓN.pdfLUZMARIAAYALALOPEZ
 
Guia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdfGuia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdflauradbernals
 
Unidad V. Disoluciones quimica de las disoluciones
Unidad V. Disoluciones quimica de las disolucionesUnidad V. Disoluciones quimica de las disoluciones
Unidad V. Disoluciones quimica de las disolucioneschorantina325
 
PPT-HISTORIA-6°-ABC.pptxjjjjjjjjjjjjjjjjjjjjjj
PPT-HISTORIA-6°-ABC.pptxjjjjjjjjjjjjjjjjjjjjjjPPT-HISTORIA-6°-ABC.pptxjjjjjjjjjjjjjjjjjjjjjj
PPT-HISTORIA-6°-ABC.pptxjjjjjjjjjjjjjjjjjjjjjjNachisRamos
 

Último (7)

Las redes sociales en el mercado digital
Las redes sociales en el mercado digitalLas redes sociales en el mercado digital
Las redes sociales en el mercado digital
 
12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdf12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdf
 
02. Mr. Spencer (T.L. Sawn).pdf.libro de un señor
02. Mr. Spencer (T.L. Sawn).pdf.libro de un señor02. Mr. Spencer (T.L. Sawn).pdf.libro de un señor
02. Mr. Spencer (T.L. Sawn).pdf.libro de un señor
 
TIPOS DE LA PSICOPATOLOGÍA DE LA PERCEPCIÓN.pdf
TIPOS DE LA PSICOPATOLOGÍA DE LA PERCEPCIÓN.pdfTIPOS DE LA PSICOPATOLOGÍA DE LA PERCEPCIÓN.pdf
TIPOS DE LA PSICOPATOLOGÍA DE LA PERCEPCIÓN.pdf
 
Guia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdfGuia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdf
 
Unidad V. Disoluciones quimica de las disoluciones
Unidad V. Disoluciones quimica de las disolucionesUnidad V. Disoluciones quimica de las disoluciones
Unidad V. Disoluciones quimica de las disoluciones
 
PPT-HISTORIA-6°-ABC.pptxjjjjjjjjjjjjjjjjjjjjjj
PPT-HISTORIA-6°-ABC.pptxjjjjjjjjjjjjjjjjjjjjjjPPT-HISTORIA-6°-ABC.pptxjjjjjjjjjjjjjjjjjjjjjj
PPT-HISTORIA-6°-ABC.pptxjjjjjjjjjjjjjjjjjjjjjj
 

La propiedad prototype en la programación orientada a objetos con JavaScript

  • 2. ¿Qué es el prototype? en JavaScript
  • 3. ¿Qué es el prototype? Las funciones son objetos que tienen propiedades (arguments, prototype y constructor) y métodos (call() y apply())
  • 4. ¿Qué es el prototype? prototype es una propiedad que tiene toda función y es de tipo objeto. En un inicio es un objeto vacío.
  • 5. ¿Qué es el prototype? Por medio de la propiedad prototype podemos añadir métodos y propiedades a la función de clase o constructor.
  • 6. ¿Qué es el prototype? El prototipo solo se utiliza cuando utilizas a la función como función constructora.
  • 8. Añadir propiedades al prototype Cuando creas una función como constructora por medio de “new”, puedes hacer referencia al mismo por medio de “this” (la cual no es una variable).
  • 9. Añadir propiedades al prototype A las propiedades añadidas con “this” se les conoce como “own properties”. A las propiedades añadidas con “prototype” se les conoce como “prototype properties”.
  • 10. Añadir propiedades al prototype TANQUE Own properties this.balas; this.vidas; this.energia; Prototype properties prototype.x; prototype.y; prototype.angulo;
  • 11. Usar propiedades y métodos del prototipo JavaScript
  • 12. Usar propiedades y métodos del prototipo Como el prototipo es un objeto, cualquier modificación la pueden visualizar todas las instancias, incluso si fueron creadas antes de la modificación al prototipo.
  • 13. Usar propiedades y métodos del prototipo Todo lo que se encuentre en el prototipo se pasa “por referencia”, por lo tanto, no se duplica en cada instancia. En cambio en las “own properties” si se duplican en cada instancia.
  • 14. Usar propiedades y métodos del prototipo TANQUE Own properties this.balas; this.vidas; this.energia; Prototype properties avanza() dispara() explota() tanque1 this.balas; this.vidas; this.energia; tanque3 this.balas; this.vidas; this.energia; tanque2 this.balas; this.vidas; this.energia;
  • 15. Propiedades del objeto y propiedades del prototipo JavaScript
  • 16. Prioridades del prototipo JS primero busca en la función la propiedad, y si no existe la busca en el objeto prototype. Si hay una propiedad de la función y una propiedad en el objeto prototype, la propiedad de la función tiene precedencia.
  • 17. Prioridades del prototipo Si eliminas la propiedad de la función (own properties), aparecerá la propiedad prototype. A esto se le conoce como “cadena de prototipos” o “property chain”
  • 18. Sobreescribir propiedades de la función JavaScript
  • 19. Sobreescribir propiedades Para que sepamos si la propiedad es de la función o del prototipo, tenemos el método hasOwnProperty().
  • 20. Sobreescribir propiedades Si borramos una propiedad de la función, JavaScript nos regresará la propiedad del prototipo.
  • 21. Visualizar el contenido del prototipo JavaScript
  • 22. Visualizar el contenido del prototipo Por medio de un ciclo for...in podemos enlistar todas las propiedades de un objeto. Por medio de l función hasOwnProperty() sabemos si son propiedades del objeto (true) o del objeto prototype (false).
  • 23. Visualizar el contenido del prototipo Para saber si una variable es enumerable (visible en el for..in) utilizamos el método propertyIsEnumerable();
  • 25. El método isPrototypeOf() El método isPrototypeOf() nos indica si un objeto es prototipo de otro. Regresa un valor booleano si son prototipos o un falso si no.
  • 27. Prototype Todos los objetos en JavaScript tienen una propiedad prototype que es otro objeto. En JavaScript, los objetos heredan por medio de la propiedad prototype. El prototipo del objeto Object es el eslabón más alto en la cadena de prototipos.
  • 28. Prototype Cualquier objeto hereda de Object.prototype. La relación entre el objeto y la clase que le hereda es “__proto__” No es buena idea usarla porque no es compatible (IE)
  • 29. Prototype prototype pertenece a la función constructora __proto__ pertenece a las instancias Un sustituto de __proto__ es Object. getPrototypeOf() pero sólo corre en ES5, no en ES3.
  • 32. Modificar los objetos predefinidos Podemos añadir propiedades o métodos a los objetos propios de JS como Array, Object, Function, etc. Douglas Crockford cadena de prototipos o “prototype chaining”