Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Classi JavaScript: in arrivo con ECMAScript 6?

Link copiato negli appunti

A differenza di molti altri linguaggi come Java o C++, JavaScript (implementazione dello standard Ecmascript 262) è un linguaggio classless, ovvero non prevede la possibilità  di sviluppare secondo l'approccio proprio dell'OOP classico.

Cià che in JavaScript viene definito comunemente (ed impropriamente) classe (e cià che più vi si avvicina concettualmente) è in realtà  una funzione che opera da costruttore per creare un nuovo tipo di struttura dati e che viene successivamente istanziato attraverso la keyword new.

Ad esempio

function Woman(age) {
      this.age = age;
}
Woman.prototype.sayAge = function() {
      return this.age - 10;
};

Tralasciando anche solo per un momento la verbosità  di questo approccio, molti sviluppatori (soprattutto quelli provenienti da linguaggi realmente object oriented) non vedono una relazione immediata (sebbene effettivamente vi sia) tra questi due distinti blocchi di codice: inoltre la gestione di alcune funzionalità , come ad esempio l'ereditarietà  delle classi (inheritance), costituiscono un problema di non immediata soluzione tanto che, ad esempio, diverse librerie (YUI, Dojo, Prototype...) hanno deciso di risolvere con una propria (differente) implementazione.

Ecmascript6 però, seguendo la proposta di Dave Herman (membro del TC39 ES6 group ad engineer per Mozilla Labs), potrebbe semplificare notevolmente la gestione di queste problematiche attraverso un nuovo costrutto class, in un modo molto simile a questo

class Woman {
      constructor(age) {
            this.age = age;
      }
      sayAge() {
            console.log(this.age - 10);
      }
}

Si noti però che questa proposta non costituirebbe una vera introduzione delle classi in JavaScript. Secondo quanto affermato da Herman

The intent […] it's to provide a terse and declarative surface for those semantics so that programmer intent is expressed instead of the underlying imperative machinery.

che potremmo definire, in estrema sintesi, come "syntactic sugar": ben venga questa proposta anche se solamente per fornire una sintassi più intuitiva (e strutturata). Per approfondimenti rimando al wiki dell'ECMAScript group

Ti consigliamo anche