Прототипное программирование и прототипное наследование в JavaScript

  Рет қаралды 9,021

Timur Shemsedinov

Timur Shemsedinov

4 жыл бұрын

Примеры кода: github.com/HowProgrammingWork...
Слайды: www.slideshare.net/tshemsedin...
Индекс курса: github.com/HowProgrammingWork...
#proto #prototype #__proto__ #oop #metarhia #js #javascript

Пікірлер: 28
@TimurSevimli
@TimurSevimli Жыл бұрын
Это пожалуй лучшая лекция из всех что встречал на эту тему. После просмотра можно понять как вообще JS устроен и как оно работает под капотом. Спасибо вам огромное Тимур Гафарович!
@bohdan.petrov
@bohdan.petrov 4 жыл бұрын
Видео в тему. Всё структурировано и доступно. Как раз разобрал прототипы и тут видео. Помогло разложить в голове всё по полочкам и понять, что же использовать. Спасибо за ваш труд!
@vovergg
@vovergg 3 жыл бұрын
Было очень интересно. Что-то наконец-то начало в голове укладываться по теме прототипного наследования.
@pashkes
@pashkes 4 жыл бұрын
Круто, заполнил пробелы в прототипах. Дякую)
@oldodyn
@oldodyn 4 жыл бұрын
Спасибо за видео. Непонятное и сложное теперь стало ясным.
@OlekusGames
@OlekusGames 4 жыл бұрын
Так рад, что нашёл ваш канал. Пока что у вас идеальные видеоролики по JS на ютубе. Спасибо
@user-eb7ih1ds1n
@user-eb7ih1ds1n Жыл бұрын
0:31 - Простой вариант прототипного наследования 6:20 - Конструктор прототипа 14:20 - Наследование через классы 19:10 - Способы унаследоваться от класса 31:01 - Современный синтаксис наследования
@self_zfc
@self_zfc 3 ай бұрын
6:40 можно было просто использовать стрелочную функцию, чтобы не создавать поле prototype у Point.from 17:35 Object === Object.prototype.constructor // true это рекурсия Object.__proto__ === Function.prototype // true В видео оговорка(?), эта связь на картинке не показана 20:53 я немного исследовал код и мне кажется мы это делаем в первую очередь затем, чтобы правильно опрелился this в функции Square. Когда мы будем создавать инстанс Square через ключевое слово new, this будет иметь только служебное поле [[Prototype]] равное Square.prototype. Если дописать в функции Square console.log(this.___proto___ === Square.prototype) то оно вернёт true. И это очень логично т.к инструкция Rect.call(а затем и ф-я Square) должна будет вернуть this дополнив его проперти x, y, width, height. Именно так и сформируется инстанс Square. Другие способы предпочтительнее т.к там мы не создаём лишний полноценный инстанс Rect().
@timashoff
@timashoff Жыл бұрын
как всегда, спасибо!
@kirillpospolitaki860
@kirillpospolitaki860 3 жыл бұрын
Спасибо большое, родной КПИ помогает и 8 лет спустя)
@deanArtDev
@deanArtDev Жыл бұрын
Сильно!
@Antonio-fm1sq
@Antonio-fm1sq 2 жыл бұрын
Спасибо!
@dianashakirova2614
@dianashakirova2614 Жыл бұрын
Ох,намучилась я с этим прототипным наследованием.Прочитала кучу статей от learn JavaScript,mdn…,но поняла только сейчас🤍Спасибо
@TimurShemsedinov
@TimurShemsedinov Жыл бұрын
Картинки помогли? Не даром я старательно слайды изображал?
@dianashakirova2614
@dianashakirova2614 Жыл бұрын
@@TimurShemsedinov По большей части картинки мне и помогли.А то пока я читала,не могла понять разницу между __proto__ и prototype
@user-no7sl1yk3f
@user-no7sl1yk3f 8 ай бұрын
Спасибо большое. Всё раскладывает по полочкам. Только единственное заметил маленькую ошибочку на 17:22. Object.__proto__ ссылается на Function.prototype, а не Object.prototype, это мелочи, конечно. P.S. Пересмотрел через месяц и понял что я тупой и автор имел ввиду что constructor в Object.prototype ссылается на Object
@nickdunne1235
@nickdunne1235 2 жыл бұрын
Спасибо. Жаль, что звук не очень. Но это не главное.
@masterguyver84
@masterguyver84 4 жыл бұрын
Спасибо, со второго раза только зашло вчера смотрел, сегодня пересмотрел и четко понимаю JS не Java. У Вас нет на гите таблиц с ссылками прототипов? По таблицам новичку просто ориентироваться, я бы даже распечатал на первое время.
@TimurShemsedinov
@TimurShemsedinov 4 жыл бұрын
Что такое таблицы со ссылками прототипов?
@masterguyver84
@masterguyver84 4 жыл бұрын
@@TimurShemsedinov То что Вы рисовали на лекции по прототипам на примерах, функций, классов, там действительно все наглядно описано, чтоб в памяти удержать надо распечатать и визуально посмотреть мне еще. Я понял уже как работает. Но для ориентира ОЧЕНЬ КЛАССНАЯ ЗАДУМКА.
@TimurShemsedinov
@TimurShemsedinov 4 жыл бұрын
@@masterguyver84 ок, добавил ссылку в описание, можно инвертировать слайды и распечатать
@masterguyver84
@masterguyver84 4 жыл бұрын
@@TimurShemsedinov Спасибо удалось скачать!!!
@anatolii.vorobiov
@anatolii.vorobiov 4 жыл бұрын
Здравствуйте, хотел уточнить на счёт второго способа при наследовании. У вас написано Square.prototype = Object.create(prototype), но почему не используется запись Square.prototype = Rect.prototype; Зачем нужно создавать новый объект прототипа не могу понять. Аналогичный результат работы я получаю при данной записи. Буду благодарен за ответ
@TimurShemsedinov
@TimurShemsedinov 4 жыл бұрын
Если после этого я буду добавлять методы в Square.prototype, то в моем слусае они будут только у экземпляров Square доступны, а в вашем - они и у Rect появятся
Мемоизация функций: memoize в JavaScript
34:57
Timur Shemsedinov
Рет қаралды 8 М.
#SpringBoot: ApplicationRunner | Deep Concepts
15:54
CodeLangs_Software_Training_Institute
Рет қаралды 40
That's how money comes into our family
00:14
Mamasoboliha
Рет қаралды 10 МЛН
KINDNESS ALWAYS COME BACK
00:59
dednahype
Рет қаралды 140 МЛН
Incredible magic 🤯✨
00:53
America's Got Talent
Рет қаралды 68 МЛН
Scary Teacher 3D Nick Troll Squid Game in Brush Teeth White or Black Challenge #shorts
00:47
Зачем нужны указатели в C++?
8:14
Dima
Рет қаралды 3,8 М.
Принцип подстановки Барбары Лисков
32:33
Timur Shemsedinov
Рет қаралды 7 М.
Итерирование, циклы и итераторы в JavaScript
44:13
Примеси в JavaScript: mixin, extend, Object.assign, class mixin
35:58
That's how money comes into our family
00:14
Mamasoboliha
Рет қаралды 10 МЛН