ES6 introduit une nouvelle syntaxe de classe qui offre des avantages dans l'écriture de fonctions de constructeur et des prototypes qu'elles créent.
La syntaxe de classe simplifie l'écriture de fonctions de constructeur et configure plus facilement les hiérarchies d'héritage. Il élimine les erreurs courantes associées à l'ancienne syntaxe ES5.
Au-delà des commodités syntaxiques, la syntaxe de classe permet :
La syntaxe de classe n'introduit pas de différence Modèle POO. Il reste l'héritage prototypique de JavaScript, bien qu'avec une syntaxe plus propre et plus sujette aux erreurs. Le constructeur de la classe permet toujours de modifier son objet prototype à l'aide de .prototype.
La syntaxe de la classe peut offrir des avantages minimes en termes de vitesse en optimisant les changements de forme lors de la construction de l'objet. Cependant, ces gains ne sont pas significatifs.
Si vous utilisez régulièrement des fonctions constructeur, la syntaxe de classe offre des avantages substantiels :
Voici une comparaison de syntaxe entre la syntaxe des classes ES2015 et ES5 :
ES2015 :
class Person { constructor(first, last) { this.first = first; this.last = last; } personMethod() { // ... } }
ES5 :
function Person(first, last) { this.first = first; this.last = last; } Person.prototype.personMethod = function() { // ... };
Pour illustrer les avantages de la syntaxe de classe, considérez la personne/l'employé/le responsable suivant hiérarchie :
// ES2015+ class Person { constructor(first, last) { this.first = first; this.last = last; } personMethod() { return `Result from personMethod: this.first = ${this.first}, this.last = ${this.last}`; } } class Employee extends Person { constructor(first, last, position) { super(first, last); this.position = position; } personMethod() { const result = super.personMethod(); return result + `, this.position = ${this.position}`; } } class Manager extends Employee { constructor(first, last, position, department) { super(first, last, position); this.department = department; } personMethod() { const result = super.personMethod(); return result + `, this.department = ${this.department}`; } }
Cette syntaxe est plus propre et minimise les erreurs potentielles par rapport à l'équivalent ES5.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!