В ECMAScript 6 появятся классы:
// Supertype
class Person {
constructor(name) {
this.name = name;
}
describe() {
return "Person called " + this.name;
}
}
// Subtype
class Employee extends Person {
constructor(name, title) {
super.constructor(name);
this.title = title;
}
describe() {
return super.describe() + " (" + this.title + ")";
}
}
Всего того же можно было добиться с помощью прототипов:
// Supertype
function Person(name) {
this.name = name;
}
Person.prototype.describe = function () {
return "Person called " + this.name;
};
// Subtype
function Employee(name, title) {
Person.call(this, name);
this.title = title;
}
Employee.prototype = Object.create(Person.prototype);
Employee.prototype.constructor = Employee;
Employee.prototype.describe = function () {
return Person.prototype.describe.call(this) + " (" + this.title + ")";
};
Как видите, классы в ECMAScript 6 — это просто синтаксический сахар над конструкторами и функциями.
Комментариев нет:
Отправить комментарий