Table of Contents

ООП в 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

w96k Ⓐ 2019-2022

2022-11-27 Sun 23:34