forked from beduExpert/B1-Programacion-con-Javascript-2020
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
David Colín
committed
Mar 9, 2020
1 parent
ab00b04
commit c8de807
Showing
5 changed files
with
95 additions
and
19 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,27 +1,85 @@ | ||
[`Programación con JavaScript`](../../Readme.md) > [`Sesión 05`](../Readme.md) > `Ejemplo 01` | ||
|
||
agrega el programa que se desarrollara con backticks> [agrega la sesion con backticks] | ||
--- | ||
|
||
## Titulo del Ejemplo | ||
## Ejemplo 2: Heredando propiedades | ||
|
||
### OBJETIVO | ||
### Objetivo | ||
|
||
- Lo que esperamos que el alumno aprenda | ||
Crear constructores para instanciar objetos y heredar propiedades entre constructores. | ||
|
||
#### REQUISITOS | ||
#### Requisitos | ||
|
||
1. Lo necesario para desarrollar el ejemplo o el Reto | ||
En una nueva carpeta vamos a crear un archivo `HTML` en blanco llamado `index.html`: | ||
|
||
#### DESARROLLO | ||
```html | ||
<html> | ||
<head> | ||
<script type="text/javascript" src="./ejemplos-sesion-5.js"></script> | ||
</head> | ||
</html> | ||
``` | ||
|
||
Agrega las instrucciones generales del ejemplo o reto | ||
Dentro de la misma carpeta creamos un archivo `ejemplos-sesion-5.js` que es donde se trabajarán los ejemplos de esta sesión. Finalmente abre el archivo `index.html` en Chrome e inspecciona la consola para ver los resultados. | ||
|
||
<details> | ||
|
||
<summary>Solucion</summary> | ||
<p> Agrega aqui la solucion</p> | ||
<p>Recuerda! escribe cada paso para desarrollar la solución del ejemplo o reto </p> | ||
</details> | ||
#### Desarrollo | ||
|
||
Agrega una imagen dentro del ejemplo o reto para dar una mejor experiencia al alumno (Es forzoso que agregages al menos una) ![imagen](https://picsum.photos/200/300) | ||
Ya vimos cómo podemos instanciar objetos a partir del mismo constructor. | ||
|
||
```javascript | ||
var Person = function(name) { | ||
this.name = name; | ||
} | ||
|
||
var john = new Person('John'); | ||
``` | ||
|
||
En ocasiones necesitamos que un constructor tenga las propiedades de otro. | ||
|
||
```javascript | ||
var Developer = function(skills, yearsOfExperience) { | ||
this.skills = skills; | ||
this.yearsOfExperience = yearsOfExperience; | ||
} | ||
``` | ||
|
||
Con este constructor `Developer` podemos instanciar múltiples objetos que tendran las propiedades `skils` y `yearsOfExperience`. Pero también necesitamos la propiedad `name` del constructor `Person`, pues un desarrollador también es una persona que tiene nombre. Para esto usamos el método `call()` el cual ejecuta el constructor padre. | ||
|
||
```javascript | ||
var Person = function(name) { | ||
this.name = name; | ||
} | ||
|
||
var Developer = function(name, skills, yearsOfExperience) { | ||
Person.call(this, name); | ||
|
||
this.skills = skills; | ||
this.yearsOfExperience = yearsOfExperience; | ||
} | ||
``` | ||
|
||
Decimos que el constructor `Developer` es hijo del constructor `Person` porque queremos que `Developer` herede la propiedad `name` de `Person`. | ||
|
||
`Person.call(this, name);` llama al constructor padre y retorna un objeto con todas sus propiedades. `this` en este contexto está haciendo referencia a `Developer`. | ||
|
||
```javascript | ||
var Person = function(name) { | ||
this.name = name; | ||
} | ||
|
||
var Developer = function(name, skills, yearsOfExperience) { | ||
Person.call(this, name); | ||
|
||
this.skills = skills; | ||
this.yearsOfExperience = yearsOfExperience; | ||
} | ||
|
||
var john = new Developer('John', 'JavaScript', 10); | ||
|
||
console.log( john ); | ||
``` | ||
|
||
De esta forma creamos un objeto `john` que es una instancia de `Developer`. Es importante tomar en cuenta que `john` no es una instancia de `Person` aunque tenga sus mismas propiedades, estas sólo fueron prestadas o heredadas durante la creación del objeto. | ||
|
||
![Inheritance](./assets/inheritance.png) |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.