freeCodeCamp/curriculum/challenges/italian/02-javascript-algorithms-an.../object-oriented-programming/understand-the-constructor-...

2.1 KiB

id title challengeType forumTopicId dashedName
587d7daf367417b2b2512b7e Comprendere la proprietà Costruttore 1 301327 understand-the-constructor-property

--description--

C'è una proprietà speciale constructor situata nelle istanze oggetto duck e beagle che sono state create nelle sfide precedenti:

let duck = new Bird();
let beagle = new Dog();

console.log(duck.constructor === Bird); 
console.log(beagle.constructor === Dog);

Entrambe queste chiamate a console.log visualizzeranno true nella console.

Nota che la proprietà constructor è un riferimento alla funzione costruttore che ha creato l'istanza. Il vantaggio della proprietà constructor è che è possibile controllare questa proprietà per scoprire di che tipo di oggetto si tratta. Ecco un esempio di come usarlo:

function joinBirdFraternity(candidate) {
  if (candidate.constructor === Bird) {
    return true;
  } else {
    return false;
  }
}

Nota: Poiché la proprietà constructor può essere sovrascritta (come vedremo nelle prossime due sfide) normalmente è meglio utilizzare il metodo instanceof per controllare il tipo di un oggetto.

--instructions--

Scrivi una funzione joinDogFraternity che richieda un parametro candidate e, utilizzando la proprietà constructor, restituisca true se il candidato è un Dog, altrimenti restituisca false.

--hints--

joinDogFraternity dovrebbe essere definita come una funzione.

assert(typeof joinDogFraternity === 'function');

joinDogFraternity dovrebbe restituire true se candidate è un'istanza di Dog.

assert(joinDogFraternity(new Dog('')) === true);

joinDogFraternity dovrebbe utilizzare la proprietà constructor.

assert(/\.constructor/.test(code) && !/instanceof/.test(code));

--seed--

--seed-contents--

function Dog(name) {
  this.name = name;
}

// Only change code below this line
function joinDogFraternity(candidate) {

}

--solutions--

function Dog(name) {
  this.name = name;
}
function joinDogFraternity(candidate) {
  return candidate.constructor === Dog;
}