Инheritance в JavaScript
- Предыдущая страница Краткое описание класса JS
- Следующая страница JS Static
Наследование класса
Чтобы создать наследование класса, используйте: extends
Ключевые слова.
Класс, созданный с помощью наследования, наследует все методы другого класса:
Экземпляр
Создайте класс с именем "Model", который будет наследовать методы класса "Car":
class Car { constructor(brand) { this.carname = brand; } present() { return 'У меня есть ' + this.carname; } } class Model extends Car {}} constructor(brand, mod) { super(brand); this.model = mod; } show() { return this.present() + ', it is a ' + this.model; } } let myCar = new Model("Ford", "Mustang"); document.getElementById("demo").innerHTML = myCar.show();
super()
метода мы ссылаемся на родительский класс.
Через вызов super()
Методы, мы вызываем метод constructor родительского класса, чтобы получить доступ к свойствам и методам родительского класса.
Инheritance полезна для повторного использования кода: при создании нового класса повторно используйте свойства и методы существующего класса.
Getter и Setter
Класс также позволяет использовать getter и setter.
Использование getter и setter для вашего свойства умно, особенно если вы хотите сделать что-то особенное перед тем, как вернуть их или установить их.
Если нужно добавить getter и setter в класс, используйте get
и set
Ключевые слова.
Экземпляр
Создайте getter и setter для свойства "carname":
class Car { constructor(brand) { this.carname = brand; } get cnam() { return this.carname; } set cnam(x) { this.carname = x; } } let myCar = new Car("Ford"); document.getElementById("demo").innerHTML = myCar.cnam;
Комментарий:Даже если getter является методом, не используйте скобки, когда хотите получить значение свойства.
Имя метода getter/setter не должно совпадать с именем свойства, в данном примере это carname
.
Многие программисты используют символ подчеркивания _ перед именем свойства, чтобы отделить getter/setter от фактического свойства:
Экземпляр
Вы можете использовать символ подчеркивания, чтобы отделить getter/setter от фактического свойства:
class Car { constructor(brand) { this._carname = brand; } get carname() { return this._carname; } set carname(x) { this._carname = x; } } let myCar = new Car("Ford"); document.getElementById("demo").innerHTML = myCar.carname;
Если нужно использовать setter, используйте синтаксис, аналогичный установке значения свойства, без скобок:
Экземпляр
Использование setter для изменения названия автомобиля на "Volvo":
class Car { constructor(brand) { this._carname = brand; } get carname() { return this._carname; } set carname(x) { this._carname = x; } } let myCar = new Car("Ford"); myCar.carname = "Volvo"; document.getElementById("demo").innerHTML = myCar.carname;
Hoisting
В отличие от функций и других заявлений JavaScript, объявления классов не поднимаются.
Это означает, что вам нужно сначала объявить класс, а затем использовать его:
Экземпляр
//Вы еще не можете использовать этот класс. //myCar = new Car("Ford") //Это вызовет ошибку. class Car { constructor(brand) { this.carname = brand; } } //Теперь вы можете использовать этот класс: let myCar = new Car("Ford")
Комментарий:Для других заявлений, таких как функции, ошибка не возникает при попытке использования их до объявления, так как по умолчанию поведение объявления JavaScript - это的提升 (перемещение объявления в верхнюю часть).
- Предыдущая страница Краткое описание класса JS
- Следующая страница JS Static