Files

86 lines
2.1 KiB
Markdown
Raw Permalink Normal View History

---
id: 587d7daf367417b2b2512b7e
title: Comprendere la proprietà Costruttore
challengeType: 1
forumTopicId: 301327
dashedName: understand-the-constructor-property
---
# --description--
C'è una proprietà speciale `constructor` situata nelle istanze oggetto `duck` e `beagle` che sono state create nelle sfide precedenti:
```js
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:
```js
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.
```js
assert(typeof joinDogFraternity === 'function');
```
`joinDogFraternity` dovrebbe restituire `true` se `candidate` è un'istanza di `Dog`.
```js
assert(joinDogFraternity(new Dog('')) === true);
```
`joinDogFraternity` dovrebbe utilizzare la proprietà `constructor`.
```js
assert(/\.constructor/.test(code) && !/instanceof/.test(code));
```
# --seed--
## --seed-contents--
```js
function Dog(name) {
this.name = name;
}
// Only change code below this line
function joinDogFraternity(candidate) {
}
```
# --solutions--
```js
function Dog(name) {
this.name = name;
}
function joinDogFraternity(candidate) {
return candidate.constructor === Dog;
}
```