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' вне ее области видимости. Итак, это нечистая функция.

Это все на сегодня.

Спасибо за чтение…