diff options
Diffstat (limited to 'content/digarden/pages/20221114142614-ооп_в_javascript.org')
-rw-r--r-- | content/digarden/pages/20221114142614-ооп_в_javascript.org | 86 |
1 files changed, 0 insertions, 86 deletions
diff --git a/content/digarden/pages/20221114142614-ооп_в_javascript.org b/content/digarden/pages/20221114142614-ооп_в_javascript.org deleted file mode 100644 index da2ceaf..0000000 --- a/content/digarden/pages/20221114142614-ооп_в_javascript.org +++ /dev/null @@ -1,86 +0,0 @@ -:PROPERTIES: -:ID: 3df0aee3-71c5-4c3e-8833-85bd9db7093c -:END: -#+title: ООП в Javascript -* ООП в Javascript -** Создание простого блюпринта -*** Constructor function -#+begin_src js - function Human (firstName, lastName) { - this.firstName = firstName - this.lastName = lastName - } -#+end_src - -*** Class -#+begin_src js - class Human { - constructor(firstName, lastName) { - this.firstName = firstName - this.lastName = lastName - } - } -#+end_src - -*** Objects Linking to Other Objects (OLOO) -#+begin_src js - const Human = { - init (firstName, lastName ) { - this.firstName = firstName - this.lastName = lastName - } - } - - const chris = Object.create(Human).init('Chris', 'Coyier') -#+end_src - -*** Factory functions -#+begin_src js - function Human (firstName, lastName) { - return { - firstName, - lastName - } - } -#+end_src - -*** Методы -Методы лучше всего определять в Prototype, так как тогда все инстансы -будут использовать одну функцию, а не иметь непосредственно уникальную -функцию в инстансе (т.е. дублировать функции по сути). - -** Наследование -*** Класс -#+begin_src js - class Child extends Parent { - // ... Stuff goes here - } - - class Developer extends Human { - constructor(firstName, lastName) { - super(firstName, lastName) - } - } - - const chris = new Developer('Chris', 'Coyier') -#+end_src - -*** Прототипы -Остальные методы наследования подразумевают ручное изменение прототипа. - -** Модификаторы доступа -*** Public -По дефолту всё Public и как таковых модификаторов доступа в Javascript и нет -*** Private -Не так давно добавили настоящие приватные поля и методы при помощи ~#~ -#+begin_src js - this.#fuel = 50 -#+end_src - -*** Private by convention -Можно как в питоне приватные вещи помечать подчеркиванием ~_~ -#+begin_src js - this._fuel = 50 -#+end_src - - |