Emulazione delle classi in Javascript

0

Prendiamo il seguente esempio di ereditarietà in javascript:

var Employee = function(name, salary) {
  Person.call(this, name);
  this.name = name;
  this.salary = salary;
}
Employee.prototype = Object.create(Person.prototype);
Employee.prototype.constructor = Employee;
Employee.prototype.doWork = function() {
  alert('working!');
}

Che ne dici di creare una classe e una super funzione in modo da poter riscrivere il codice precedente in questo modo:

var Employee = Class({

  extends: Person

  constructor: function(name, salary) {
    super(name);
    this.salary = salary;
  }

  doWork: function() {
    alert('working!');
  }

});

L'utilizzo sarebbe più o meno analogo alla classe ECMAScript 6:

class Employee extends Person {
  constructor(name, salary) {
    super(name);
    this.salary = salary;
  }

  doWork() {
    alert('working!');
  }
}

Ci vuole ancora un po 'di tempo prima che ogni browser esegua ECMAScript 6, quindi perché non usare tale stenografia per le dichiarazioni di classe? Questo avrebbe dei veri inconvenienti? Ci sono librerie che fanno questo?

    
posta Gábor Angyal 13.09.2016 - 10:15
fonte

1 risposta

0

It still takes a some time until every browser runs ECMAScript 6…

se compili il codice ES2015 su ES5 con Babel , puoi comunque scrivere in questo modo. Non c'è bisogno di un intermediario scomodo.

Would this have any real drawbacks?

Una terza sintassi che tenta di imitare le nuove funzionalità senza essere effettivamente compatibile con le nuove funzionalità ha il problema di proliferare gli standard non necessari .

Are there any libraries doing this?

Non esattamente; Come ho detto in precedenza, Babel consente di compilare il codice da un sapore di ECMAScript a un altro. Non conosco alcun quadro intermedio, ma immagino che sia probabile che tali cose esistano già in qualche modo.

    
risposta data 13.09.2016 - 18:49
fonte

Leggi altre domande sui tag