ООП в Javascript
Создание простого блюпринта
Constructor function
function Human (firstName, lastName) { this.firstName = firstName this.lastName = lastName }
Class
class Human { constructor(firstName, lastName) { this.firstName = firstName this.lastName = lastName } }
Objects Linking to Other Objects (OLOO)
const Human = { init (firstName, lastName ) { this.firstName = firstName this.lastName = lastName } } const chris = Object.create(Human).init('Chris', 'Coyier')
Factory functions
function Human (firstName, lastName) { return { firstName, lastName } }
Методы
Методы лучше всего определять в Prototype, так как тогда все инстансы будут использовать одну функцию, а не иметь непосредственно уникальную функцию в инстансе (т.е. дублировать функции по сути).
Наследование
Класс
class Child extends Parent { // ... Stuff goes here } class Developer extends Human { constructor(firstName, lastName) { super(firstName, lastName) } } const chris = new Developer('Chris', 'Coyier')
Прототипы
Остальные методы наследования подразумевают ручное изменение прототипа.
Модификаторы доступа
Public
По дефолту всё Public и как таковых модификаторов доступа в Javascript и нет
Private
Не так давно добавили настоящие приватные поля и методы при помощи #
this.#fuel = 50
Private by convention
Можно как в питоне приватные вещи помечать подчеркиванием _
this._fuel = 50