Объекты в JavaScript
Объекты являются основными строительными блоками в JavaScript. Объект — это коллекция пар "ключ-значение", где значения могут быть любыми типами данных.
// Пример создания объекта
let person = {
name: "John",
age: 30,
greet: function() {
console.log("Привет, меня зовут " + this.name);
}
};
person.greet(); // Привет, меня зовут John
Классы в JavaScript
Классы были добавлены в JavaScript с ES6 и представляют собой удобный способ создания объектов и реализации ООП-концепций. Класс определяет тип объекта, а экземпляры класса создаются с помощью ключевого слова new.
// Пример создания класса
class Animal {
constructor(name, species) {
this.name = name;
this.species = species;
}
speak() {
console.log(`${this.name} говорит: Привет!`);
}
}
let dog = new Animal("Рекс", "Собака");
dog.speak(); // Рекс говорит: Привет!
Наследование
Наследование позволяет создавать новые классы на основе существующих, наследуя их свойства и методы. В JavaScript наследование реализуется с помощью ключевого слова extends.
// Пример наследования
class Animal {
constructor(name) {
this.name = name;
}
speak() {
console.log(`${this.name} издает звук.`);
}
}
class Dog extends Animal {
speak() {
console.log(`${this.name} лает.`);
}
}
let rex = new Dog("Рекс");
rex.speak(); // Рекс лает.
Инкапсуляция
Инкапсуляция — это принцип, который скрывает внутреннюю реализацию объекта и предоставляет доступ к данным через методы. В JavaScript инкапсуляция реализуется с помощью приватных свойств и методов.
// Пример инкапсуляции
class Counter {
#count = 0; // Приватное свойство
increment() {
this.#count++;
console.log(this.#count);
}
getCount() {
return this.#count;
}
}
let counter = new Counter();
counter.increment(); // 1
console.log(counter.getCount()); // 1
Полиморфизм
Полиморфизм позволяет использовать единый интерфейс для работы с разными типами объектов. В JavaScript это достигается за счет переопределения методов в подклассах.
// Пример полиморфизма
class Animal {
speak() {
console.log("Животное издает звук.");
}
}
class Dog extends Animal {
speak() {
console.log("Собака лает.");
}
}
class Cat extends Animal {
speak() {
console.log("Кошка мяукает.");
}
}
let animals = [new Dog(), new Cat()];
animals.forEach(animal => {
animal.speak();
});
// Собака лает.
// Кошка мяукает.
Абстракция
Абстракция — это концепция, которая фокусируется на важных характеристиках объекта, игнорируя несущественные детали. В JavaScript абстракция достигается через создание классов и методов, которые скрывают сложные детали реализации.
// Пример абстракции
class Shape {
constructor(name) {
this.name = name;
}
getArea() {
throw new Error("Метод getArea должен быть реализован.");
}
}
class Circle extends Shape {
constructor(radius) {
super("Круг");
this.radius = radius;
}
getArea() {
return Math.PI * Math.pow(this.radius, 2);
}
}
let circle = new Circle(5);
console.log(`${circle.name} с площадью: ${circle.getArea()}`);
// Круг с площадью: 78.53981633974483