Черновик

Черновик

Ruslan Trybukhouski

ИНКАПСУЛЯЦИЯ

Термин 1. Соединение методов и данных

Термин 1. Сокрытие внутренней структуры объекта от внешних воздействий.

Суть инкапсуляции заключается в том, что объект не должен изменяться ничем, кроме собственных методов.


НАСЛЕДОВАНИЕ

Термин. Принцип, при котором один класс может наследовать (использовать) свойства и методы другого класса.

Виды наследования:

  • Одиночное
    Класс наследуется от одного класса
  • Множественное
    Класс наследуется от многих классов

Прототипы, классы, конструкторы

class - это шаблон для добавления объектов

У каждого объекта есть свойство constructor, которое указывает на функцию, в которой этот объект был создан.
Синтаксис: constructor() {}

Пример:
указать, как new object берет свойства у прототипа

У конструктора всегда есть пустой объект prototype.
При наполнении prototype свойствами, мы автоматически наполняем свойствами и все экземпляры данного конструктора.
Эти свойства будут храниться не напрямую в объектах, а в служебном свойстве Proto, которое создается всегда

Прототипы

ВСЕ объекты в JS наследуются.
Как минимум от другого объекта.
Объект, от которого произошло наследование называется прототипом.
Унаследованные свойства могут быть найдены в объекте prototype конструктора.

Свойством prototype можно добавить свойство к ранее определенному ТИПУ объекта. Таким образом создается свойство, единое для всех объектов данного типа, а не одного экземпляра этого типа объекта.
Пример: Добавляем свойство color ко всем объектам типа car, а затем присваиваем значение этому свойству у объекта car1.

Унаследование прототипа

extends

Синтаксис:
class dog extends animals (animals - прототип)

Классически все свойства у прототипа, все свойства - у объекта.

Источники для повторого анализа

Добавить ссылки на интересные методы из видео:
-добавить свойства без дублирования в экземплярах и т.д.
-др.
видео

Новый синтаксис классов


ПОЛИФОРМИЗМ

Термин. Способность функции работать с данными разных типов.
Пр.: Методы 'лететь' 'бежать', 'ехать' заменяются единым 'переместить', которые подсраивается под конкретный объект.

Виды полиморфизма:

  • По запросу (ad-hoc)
  • Параметрический

Все if в программе можно заменить на полиморфизм.


ООП

Курс по ООП здесь


МЕТОДЫ

  • throw new
  • .test
  • [...n]
  • hoisting
  • rest / spread
  • Итераторы / генераторы
  • Промисы
  • Reflect
  • асинхронность
  • entries
  • padStart +
  • .flat
  • optional
  • assign

Как перевернуть массив?

.reverse()

Как объединить элементы массива в строку?

.join()

В скобках следует указать тип разделителя.

Как вернуть квадратный корень числа?

Math.sqrt()

Как вернуть уникальные значения строки или массива?

new Set(итерируемый объект)

Видоизменить массив применив указанную функцию к каждому элементу массива

.map(el => el(то, что делать с элементом))
Пример: .map(el => el * 2)

Как разбить строку на массив?

.split()
В скобках - элемент, на основе которого делать разбивку (элемент удаляется)

Как объединить несколько объектов?

  • object.assign(obj1, obj2)
    Также можно этим методом добавлять другие значения:
    object.assign(obj1, obj2, {
    a:2,
    b: 3})

ОБЪЕКТЫ

Перебор простых объектов

  • Object.keys(objectName)
    Возвращает массив ключей.
    Пример:
  • Object.values(objectName)
    Возвращает массив значений.
    Пример:
  • Object.entries(objectName)
    Возвращает массив пар [ключ, значение].
    Пример:
  • Переборы циклом
    Описанные выше методы могут быть полезны для перебора значений в цикле.
    Пример:

Трансформация объекта

Объекты не имеют большого количество методов, в отличие от массивов, однако их можно "украсть".
Для этого необходимо:
1.К методу Object.entries присовокупить желаемый метод из массива.
2.Полученную конструкцию вернуть обратно в простой объект, применив функцию Object.fromEntries().

Пример:

Перебор всех свойств объекта

  • Цикл for...in
    Для перебора всех свойств объекта используется цикл for..in.
    Цикл for..in отличается от цикла for(;;).
    Синтаксис:

Пример. Вывод всех свойств объекта user.

Примечание! Конструкции «for» позволяют объявлять переменную внутри цикла (как let key в примере выше).

  • Object.keys(o)
    Этот метод возвращает массив со всеми собственными (те, что в цепочке прототипов, не войдут в массив) именами перечисляемых свойств объекта o.
    Пример:
  • Object.getOwnPropertyNames(o)
    Этот метод возвращает массив содержащий все имена своих свойств (перечисляемых и неперечисляемых) объекта o.

https://behemothoz.gitbooks.io/js-learn/content/object/perechislyaemie-i-neperechislyaemie-svoistva.html



ГЕТТЕРЫ И СЕТТЕРЫ

Зачем нужны

Это функции, которые используются для присвоения и получения значения.

Во внешнем коде они выглядят как обычные свойства объекта.

Свойства объекта в сущности являются теми же самыми переменными JS, за тем исключением, что они закреплены за объектом

Геттер ("получить" (англ.)) — метод, который получает значение определенного свойства. Предназначен для чтения.

Сеттер ("присвоить" (англ.)) — метод, который присваивает значение определенному свойству объекта. Предназначен для записи.

Аксессоры не работаю с delete.

Геттер только выводит информацию. Ему нельзя присвоить другое значение, перезаписав.

Сеттер принимает одно значение. Для присвоения свойству.

Определение геттеров и сеттеров

При объявлении объекта они обозначаются get и set

Геттер и сеттер можно присвоить для любого объекта (встроенного либо явно определенного), поддерживающего добавление новых свойств.

Геттер читается не как функция, а как обычное свойство. Мы не вызываем user.fullName как функцию, а читаем как обычное свойство: геттер выполнит всю работу за кулисами. - в этом и заключается смысл аксессоров.


МАССИВЫ


АНИМАЦИЯ

Удаление из DOM анимирующего выполненного CSS-класса: -->

Добавление класса, выключающего анимацию, с целью ее включения: -->


КОНТЕКСТ

This

- специальное ключевое слово внутри метода, использующееся для ссылки на текущий объект.
-это ключевое слово, используемое в JavaScript, которое имеет особое значение, зависящее от контекста в котором оно применяется.
-это ссылка на текущий объект

Контекст this меняется в зависимости от его использования.

Когда мы пользуемся ключевым словом this, мы, на самом деле, обращаемся с его помощью к некоему объекту

Если вы попытаетесь обратиться к ключевому слову this в глобальной области видимости, оно будет привязано к глобальному контексту, то есть — к объекту window в браузере.

При использовании функций, которые имеются в глобальном контексте (это отличает их от методов объектов) ключевое слово this в них будет указывать на объект window.
Пр. Просто консоль браузера.

Когда this используется внутри объекта, это ключевое слово ссылается на сам объект.
Пример:

В стрелочных функциях this всегда относится к глобальному контексту (к объекту window). 

Дополнить раздел от Использование this в обычных функциях https://habr.com/ru/company/ruvds/blog/419371/


ОПРЕДЕЛЕНИЯ

Функциональный аргумент (Functional argument, “Funarg”, “Фунарг”) — аргумент, значением которого является функция.

Функции высшего порядка (ФВП, higher-order functions, HOF. функционалы) - функции, принимающие функциональные аргументы.

Функции с функциональным значением (function valued functions) - функции, возвращающие функции.

Функциональные аргументы, функционалы и функции с функциональным значением, называются функциями первого класса (first-class functions) или более обще — объекты первого класса (first-class objects)

Свободная переменная (Free variable) — переменная, используемая функцией, но не являющаяся ни параметром, ни локальной переменной этой функции.

Лексическая область видимости (лексический контекст, lexical scope, лексическое (статическое) связывание) - локальная область видимости функции ограничена текстом определения этой функции (имя переменной имеет значение внутри тела функции и считается неопределённым за его пределами).

Динамическая область видимости (динамический контекст, динамическое связывание) - локальная область видимости ограничена временем исполнения функции (имя доступно, пока функция выполняется, и исчезает, когда функция возвращает управление вызвавшему её коду).


Report Page