2.8 KiB
id | title | challengeType | forumTopicId | dashedName |
---|---|---|---|---|
587d7dae367417b2b2512b79 | Extender constructores para recibir argumentos | 1 | 18235 | extend-constructors-to-receive-arguments |
--description--
Los constructores de Bird
y Dog
del último desafío funcionaron bien. Sin embargo, nota que todas las Birds
que son creadas con el constructor Bird
, automáticamente se nombran Albert, son de color azul y tienen dos patas. ¿Qué pasa si quieres Birds (aves) con diferentes valores para nombre y color? Es posible cambiar manualmente las propiedades de cada Bird (ave), pero sería bastante trabajo:
let swan = new Bird();
swan.name = "Carlos";
swan.color = "white";
Supongamos que estabas escribiendo un programa para hacer seguimiento de cientos o incluso miles de aves diferentes en un aviario. Tardaría mucho tiempo en crear todas las aves, para luego cambiar las propiedades a diferentes valores para cada una. Para crear más fácilmente diferentes objetos Bird
, puedes diseñar tu constructor de aves para aceptar parámetros:
function Bird(name, color) {
this.name = name;
this.color = color;
this.numLegs = 2;
}
Luego pasa los valores como argumentos para definir cada ave única en el constructor Bird
: let cardinal = new Bird("Bruce", "red");
Esto genera una nueva instancia de Bird
con propiedades name
y color
que tienen como valor Bruce
y red
, respectivamente. La propiedad numLegs
aún está establecida en 2. El cardinal
tiene estas propiedades:
cardinal.name
cardinal.color
cardinal.numLegs
El constructor es más flexible. Ahora es posible definir las propiedades para cada Bird
en el momento que se crea. Esta es una manera en que los constructores de JavaScript son tan útiles. Estos agrupan objetos basados en características y comportamiento compartidos, y definen un plano que automatiza su creación.
--instructions--
Crea otro constructor Dog
. Esta vez, configúralo para que tome los parámetros name
y color
, y ten la propiedad numLegs
fija a 4. Luego crea un nuevo Dog
almacenado en una variable terrier
. Pasale dos cadenas de texto como argumentos para las propiedades name
y color
.
--hints--
Dog
debe recibir un argumento para name
.
assert(new Dog('Clifford').name === 'Clifford');
Dog
debe recibir un argumento para color
.
assert(new Dog('Clifford', 'yellow').color === 'yellow');
Dog
debe tener la propiedad numLegs
fija a 4.
assert(new Dog('Clifford').numLegs === 4);
terrier
debería ser creado usando el constructor Dog
.
assert(terrier instanceof Dog);
--seed--
--seed-contents--
function Dog() {
}
--solutions--
function Dog (name, color) {
this.numLegs = 4;
this.name = name;
this.color = color;
}
const terrier = new Dog();