freeCodeCamp/curriculum/challenges/italian/02-javascript-algorithms-an.../object-oriented-programming/extend-constructors-to-rece...

2.8 KiB

id title challengeType forumTopicId dashedName
587d7dae367417b2b2512b79 Estendere i costruttori facendogli ricevere argomenti 1 18235 extend-constructors-to-receive-arguments

--description--

I costruttori Bird e Dog dell'ultima sfida hanno funzionato bene. Tuttavia, nota che tutti i Birds che vengono creati con il costruttore Bird sono automaticamente chiamati Albert, sono di colore blu e hanno due zampe. E se volessi degli uccelli con valori diversi per nome e colore? È possibile cambiare manualmente le proprietà di ogni uccello, ma questo sarebbe molto laborioso:

let swan = new Bird();
swan.name = "Carlos";
swan.color = "white";

Supponi di voler scrivere un programma per tenere traccia di centinaia o addirittura migliaia di uccelli diversi in una voliera. Ci vorrebbe molto tempo per creare tutti gli uccelli e successivamente cambiare le proprietà impostando valori diversi per tutti. Per creare più facilmente diversi oggetti Bird, puoi progettare il tuo costruttore Bird in modo che accetti dei parametri:

function Bird(name, color) {
  this.name = name;
  this.color = color;
  this.numLegs = 2;
}

Potrai quindi passargli dei valori come argomenti al costruttore Bird per definire ogni singolo uccello: let cardinal = new Bird("Bruce", "red"); crea una nuova istanza di Bird con le proprietà name e color impostate rispettivamente a Bruce e red. La proprietà numLegs è ancora impostata a 2. Il cardinal ha queste proprietà:

cardinal.name
cardinal.color
cardinal.numLegs

Il costruttore è più flessibile. Ora è possibile definire le proprietà per ogni Bird al momento della creazione, che è uno dei motivi per cui i costruttori JavaScript sono così utili. Essi raggruppano gli oggetti in base a caratteristiche e comportamenti condivisi e definiscono un progetto che automatizza la loro creazione.

--instructions--

Crea un altro costruttore per Dog. Questa volta, impostalo in modo che riceva i parametri name e color, e abbia la proprietà numLegs fissata a 4. Quindi crea un nuovo Dog salvandolo in una variabile terrier. Passagli due stringhe come argomenti per le proprietà name e color.

--hints--

Dog dovrebbe ricevere un argomento per name.

assert(new Dog('Clifford').name === 'Clifford');

Dog dovrebbe ricevere un argomento per color.

assert(new Dog('Clifford', 'yellow').color === 'yellow');

Dog dovrebbe avere la proprietà numLegs impostata a 4.

assert(new Dog('Clifford').numLegs === 4);

terrier dovrebbe essere creato usando il costruttore 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();