
10 тем JavaScript, которые я узнал сегодня впервые —
1. Объектно-ориентированное программирование (ООП)
Объектно-ориентированное программирование — это стиль программирования, основанный на коллекциях классов и объектов. Ряд объектов наследует класс, и объекты могут общаться между собой.
Три основные концепции ООП:
- Наследование
- Инкапсуляция
- Полиморфизм.
2. «Класс» в ООП
В объектно-ориентированном программировании класс — это набор свойств и методов. Это также считается «планом» в ООП. В ES6 класс должен быть объявлен с ключевым словом class. Начальная буква имени класса — заглавная. Внутри {} мы объявляем свойства (в функции-конструкторе) и методы. А объект — это конкретный экземпляр класса, который начинается с ключевого слова new перед именем класса.
Пример -
class Car {
constructor(name, model, color) {
this.name = name;
this.model = model;
this.color = color;
}
start() {
console.log("Starting")
}
stop() {
console.log("Stop here")
}
}
В приведенном выше примере Car представляет собой набор свойств (имя, модель и цвет) и методов (start(), stop()). Итак, Car здесь класс.
3. «Объект» в ООП
Объект — это конкретный экземпляр класса, который начинается с ключевого слова new перед именем класса.
Пример -
const car1 = new Car('BMW', 'M-2321', 'black')
Здесь car1 — это объект.
4. Наследование
Наследование — это функция, представляющая отношения разных классов. Для этого свойства класса могут быть повторно использованы в другом классе.
class Product {
constructor(name, price) {
this.name = name;
this.price = price;
}
}
class Book extends Product {
constructor(author) {
super(name, price);
this.author = author;
}
}
В этом примере свойства name и price класса Product повторно используются в классе Book.
5. Инкапсуляция
Инкапсуляция означает сокрытие ненужных деталей от любого пользователя. Это предотвращает доступ к данным через функцию в объекте.
Пример -
function Person(name, age) {
this.name = name;
this.age = age;
this.walk = function() {
console.log('Walking on foot');
}
const testPerson = new Person("sayed", 22);
console.log(testPerson.name);
console.log(testPerson.walk());
Здесь мы получаем доступ к методу walk() через функцию. Мы не даем прямого доступа к тому, как работает walk(). Это инкапсуляция.
6. Полиморфизм
Полиморфизм можно объяснить таким образом, чтобы можно было выполнять одно и то же действие в разных формах. Это означает, что он дает нам возможность вызывать один и тот же метод для многих объектов JavaScript.
Пример -
call Product {
construct(name, price, amount) {
this.name = name;
this.price = price;
this.amount = amount;
}
getTotal() {
let total = this.amount * this.price;
console.log(total);
}
}
class Book extends Product {
constructor(name, price) {
super(name, price)
}
getTotal() {
let total = this.price * this.amount;
let totalWithoutDiscount = total - 0.10 * total;
console.log(getTotal);
}
}
7. Стек вызовов
Стек вызовов работает как стек, как структура данных. Это означает следовать — последний пришел, первый ушел (LIFO) во время выполнения.
Пример -
function test() {
console.log("this is test")
}
function test1() {
return test();
}
function test2() {
return test1();
}
test2();
Здесь, когда мы вызываем test2(), он переходит в стек вызовов поверх main(). затем он вызывает test1(), а test1() вызывает test(). Но test() выполняется первым.
8. Функция высшего порядка
Функция, которая может принимать другую функцию в качестве аргумента или возвращать функцию в качестве результата, называется функцией высшего порядка. В JavaScript есть несколько функций высшего порядка. map(), filter(), reduce() также являются функциями высшего порядка.
Пример -
const arr = [10,20,30,40]; const result = arr.reduce((x, y) => x + y, 0); console.log(result); //100
9. Чистая функция
Функции, которые принимают аргументы и возвращают значение без каких-либо изменений, выходят за его рамки и не могут вызывать никаких побочных эффектов.
Пример -
function getSum(a,b) {
return a + b;
}
10. Нечистая функция
Функции, которые возвращают значение с изменением данных за пределами своей области, называются нечистыми функциями.
Пример -
let vat = 15/100;
function getTotal(price, number) {
return (price * number) + (price * number * vat);
}
getTotal();
здесь функция getTotal() зависит от внешней переменной 'vat' вне ее области видимости. Итак, это нечистая функция.
Это все на сегодня.
Спасибо за чтение…