Skip to content

Commit b43b33b

Browse files
committed
Prortotypes / Herencia
1 parent db05c97 commit b43b33b

File tree

4 files changed

+55
-2
lines changed

4 files changed

+55
-2
lines changed

README.md

Lines changed: 55 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -474,7 +474,7 @@ function Familia(numeroDeIntegrantes,mascotas){
474474
console.log(familia);
475475
```
476476

477-
![Console_Result_4](prototypes/P_4.1.png)
477+
![Console_Result_4.1](prototypes/P_4.1.png)
478478

479479
>Ahora que tenemos la `function` en el `__proto__` podemos hacerlo parte de otra función.
480480
@@ -511,5 +511,58 @@ function Familia(numeroDeIntegrantes,mascotas){
511511

512512
console.log(familia);
513513
```
514+
### Consola (Google Chrome)
514515

515-
![Console_Result_4](prototypes/P_5.png)
516+
![Console_Result_5](prototypes/P_5.png)
517+
518+
Como podemos observar todo funciona como era de esperarse y como *"heredamos"* podemos entender que podrias accesar a la `function` del `__prototype__` que hemos declarado.
519+
520+
![Console_Result_6](prototypes/P_6.png)
521+
522+
```js
523+
Uncaught TypeError: familia.tipoCasa is not a function
524+
at <anonymous>:1:9
525+
526+
/*
527+
Este error nos indica que no es una función a pesar de haber "heredado" "todo" lo que compone a la funcion 'Casa'.
528+
529+
Podemos revisar el __proto__ del objeto 'familia' y veremos que no existe en el.
530+
531+
Por lo tanto no heredados su __prototype__
532+
*/
533+
```
534+
>Para heredar el `__prototype__` `realizaremos lo siguiente
535+
536+
```js
537+
function Casa(calle,numero){
538+
this.calle = calle;
539+
this.numero = numero;
540+
}
541+
542+
Casa.prototype.tipoCasa = function(casa){
543+
if(casa === 1){
544+
return 'Unifamiliar';
545+
} else if(casa === 2){
546+
return 'Duplex';
547+
}else{
548+
return 'Departamento';
549+
}
550+
}
551+
552+
function Familia(calle,numero,numeroDeIntegrantes,mascotas){
553+
Casa.call(this,calle,numero);
554+
this.numeroDeIntegrantes = numeroDeIntegrantes;
555+
this.mascotas = mascotas;
556+
}
557+
558+
/* Integrar el __proto__ al objeto*/
559+
Familia.prototype = Object.create(Casa.prototype);
560+
561+
const familia = new Familia('San Pedro',19,'5 Integrantes',2);
562+
563+
console.log(familia);
564+
console.log(familia.tipoCasa(1));
565+
```
566+
![Console_Result_8](prototypes/P_8.png)
567+
568+
>Ahora ya es parte de nuestra `function` *Familia* y todos los objetos que crearemos tendran en su `__proto__` la `function` **tipoCasa**.

prototypes/P_6.png

34.9 KB
Loading

prototypes/P_7.png

31.7 KB
Loading

prototypes/P_8.png

37.6 KB
Loading

0 commit comments

Comments
 (0)