freeCodeCamp/curriculum/challenges/italian/02-javascript-algorithms-an.../es6/use-class-syntax-to-define-...

2.7 KiB

id title challengeType forumTopicId dashedName
587d7b8b367417b2b2512b53 Usare la sintassi class per definire una funzione costruttore 1 301212 use-class-syntax-to-define-a-constructor-function

--description--

ES6 fornisce una nuova sintassi per creare oggetti, utilizzando la parola chiave class (classe).

Va notato che la sintassi class è appunto solo una sintassi, e non la vera e propria implementazione basata su classi di un paradigma orientato agli oggetti, a differenza di quanto accade in linguaggi come Java, Python, Ruby, ecc.

In ES5, di solito definiamo una funzione constructor e usiamo la parola chiave new per istanziare un oggetto.

var SpaceShuttle = function(targetPlanet){
  this.targetPlanet = targetPlanet;
}
var zeus = new SpaceShuttle('Jupiter');

La sintassi class sostituisce semplicemente la creazione della funzione constructor:

class SpaceShuttle {
  constructor(targetPlanet) {
    this.targetPlanet = targetPlanet;
  }
}
const zeus = new SpaceShuttle('Jupiter');

Va notato che la parola chiave class dichiara una nuova funzione, alla quale viene aggiunto un costruttore. Questo costruttore viene invocato quando new viene chiamata per creare un nuovo oggetto.

Nota: Per i nomi di classi ES6 dovrebbe essere usato per convenzione lo stile di scrittura UpperCamelCase, come fatto sopra in SpaceShuttle.

Il metodo costruttore constructor è un metodo speciale per creare e inizializzare un oggetto creato con class. Potrai approfondire la cosa nella sezione Programmazione Orientata agli Oggetti della certificazione Algoritmi e Strutture Dati in JavaScript.

--instructions--

Usa la parola chiave class e scrivi una funzione constructor per creare la classe Vegetable.

La classe Vegetable consente di creare un oggetto con una proprietà name che viene passata al constructor.

--hints--

Vegetable dovrebbe essere una class con un metodo constructor definito.

assert(
  typeof Vegetable === 'function' && typeof Vegetable.constructor === 'function'
);

Dovrebbe essere usata la parola chiave class.

assert(code.match(/class/g));

Vegetable dovrebbe poter essere istanziata.

assert(() => {
  const a = new Vegetable('apple');
  return typeof a === 'object';
});

carrot.name dovrebbe restituire carrot.

assert(carrot.name == 'carrot');

--seed--

--seed-contents--

// Only change code below this line

// Only change code above this line

const carrot = new Vegetable('carrot');
console.log(carrot.name); // Should display 'carrot'

--solutions--

class Vegetable {
  constructor(name) {
    this.name = name;
  }
}
const carrot = new Vegetable('carrot');