ES6 memperkenalkan sintaks kelas baharu yang menawarkan faedah dalam menulis fungsi pembina dan prototaip yang mereka cipta.
Sintaks kelas memudahkan penulisan fungsi pembina dan menyediakan hierarki warisan dengan lebih mudah. Ia menghapuskan ralat biasa yang dikaitkan dengan sintaks ES5 lama.
Di luar kemudahan sintaksis, sintaks kelas membolehkan:
Sintaks kelas tidak memperkenalkan yang berbeza model OOP. Ia kekal sebagai warisan prototaip JavaScript, walaupun dengan sintaks yang lebih bersih dan terdedah kepada ralat. Pembina kelas masih membenarkan mengubah suai objek prototaipnya menggunakan .prototaip.
Sintaks kelas mungkin memberikan faedah kelajuan minimum dengan mengoptimumkan perubahan bentuk semasa pembinaan objek. Walau bagaimanapun, keuntungan ini tidak ketara.
Jika anda kerap menggunakan fungsi pembina, sintaks kelas menawarkan kelebihan yang besar:
Berikut ialah perbandingan sintaks antara sintaks kelas ES2015 dan 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() { // ... };
Untuk menggambarkan faedah sintaks kelas, pertimbangkan Orang/Pekerja/Pengurus berikut hierarki:
// 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}`; } }
Sintaks ini lebih bersih dan meminimumkan kemungkinan ralat berbanding ES5 yang setara.
Atas ialah kandungan terperinci Apakah kelebihan utama menggunakan Sintaks Kelas dalam ES6 berbanding pendekatan fungsi pembina ES5 tradisional?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!