Как работать с классами в EcmaScript 2015.
Всем привет! В этой статье мы рассмотрим, как использовать классы в EcmaScript 2015 и стоит ли их вообще использовать?
Заметьте, что новые функции EcmaScript 2015 работают сейчас не везде. Если вы хотите их протестировать, то советую установить браузер Mozilla Firefox Nightly.
JavaScript всегда был непохожим на другие объектно-ориентированные языки программирования, однако с приходом новой версии эта отличительная черта становится все меньше. Если вы знаете, как создавать и использовать классы, к примеру, в PHP, то тут для вас все будет понятно.
Итак, вот, как создавать классы в JavaScript.
class Car {
constructor(model) {
this.model = model;
}
getModel() {
return "The Model of The Car is " + this.model;
}
}
Как видите, очень похоже на другие языки. Вызов также не выделяется.
var bmw = new Car("BMW");
alert(bmw.getModel());
Думаю, тут все понятно. Теперь поговорим о наследовании. Если вы хотите унаследовать какие-то свойства и методы другого класса, просто добавьте ключевое слово extends. А если вы хотите вызвать родительский метод, то используйте ключевое слово super. Вот как это выглядит на практике.
class Car {
// code...
}
class Kia extends Car {
constructor(model, autoPilot) {
super.constructor(model);
this.autoPilot = autoPilot;
}
getModel() {
return super.getModel() + " and this is the best model";
}
}
var kia = new Kia("Sportage", false);
alert(kia.getModel());
Тут тоже нет ничего сложного. И все, что нам осталось разобрать, это "геттеры" и "сеттеры". Что это и для чего нужны, вы уже должны знать, а если нет, то можете почитать о них в разделе PHP. Я же просто покажу пример использования.
class ClassSomething {
constructor(something) {
this.something = something;
}
get Something() {
return this.something;
}
set Something(value) {
this.something = value;
}
}
var smth = new ClassSomething("something");
alert(smth.something);
smth.something = "something here";
Ну, что же. Мы разобрались, как работают классы в EcmaScript 2015. В конце стоит лишь сказать, что на самом деле javascript все так же использует объекты и прототипы, а не настоящие классы. Такой синтаксис был сделан лишь для того, чтобы людям, возможно, было легче читать и писать код, но ООП, к которому большинство из программистов привыкло, как не было, так и нет. Стоит ли использовать такой синтаксис? Решать Вам!
А у меня на этом все. Спасибо за внимание!
-
- Михаил Русаков
Комментарии (2):
Благодарю
Ответить
Наследование свойств родительского класса (Car) классом Kia в приведенном примере происходит неверно. В объявлении конструктора класса Kia вместо сроки * super.constructor(model); * неободимо указать * super(model); * В противном случае консоль выдает ошибку и пишет, что нельзя вызывать методы super перед вызовом самого super. Удивляет, что статье больше года, и на эту ошибку до сих пор никто не указал. Интересно, эти статьи вообще читают?
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.