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

แชร์
ฝัง
  • เผยแพร่เมื่อ 28 ก.ย. 2024
  • Примеры кода: github.com/How...
    Слайды: www.slideshare...
    Индекс курса: github.com/How...
    #proto #prototype #__proto__ #oop #metarhia #js #javascript

ความคิดเห็น • 28

  • @АнтонСухов-н9у
    @АнтонСухов-н9у 2 ปีที่แล้ว +4

    0:31 - Простой вариант прототипного наследования
    6:20 - Конструктор прототипа
    14:20 - Наследование через классы
    19:10 - Способы унаследоваться от класса
    31:01 - Современный синтаксис наследования

  • @TimurSevimli
    @TimurSevimli ปีที่แล้ว +7

    Это пожалуй лучшая лекция из всех что встречал на эту тему. После просмотра можно понять как вообще JS устроен и как оно работает под капотом. Спасибо вам огромное Тимур Гафарович!

  • @ИльяБондаренко-т4е
    @ИльяБондаренко-т4е 10 หลายเดือนก่อน

    Спасибо большое. Всё раскладывает по полочкам. Только единственное заметил маленькую ошибочку на 17:22. Object.__proto__ ссылается на Function.prototype, а не Object.prototype, это мелочи, конечно.
    P.S. Пересмотрел через месяц и понял что я тупой и автор имел ввиду что constructor в Object.prototype ссылается на Object

  • @deanArtDev
    @deanArtDev 2 ปีที่แล้ว +1

    Сильно!

  • @self_zfc
    @self_zfc 5 หลายเดือนก่อน +1

    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().

  • @bohdan.petrov
    @bohdan.petrov 4 ปีที่แล้ว +8

    Видео в тему. Всё структурировано и доступно. Как раз разобрал прототипы и тут видео. Помогло разложить в голове всё по полочкам и понять, что же использовать.
    Спасибо за ваш труд!

  • @vovergg
    @vovergg 3 ปีที่แล้ว +3

    Было очень интересно. Что-то наконец-то начало в голове укладываться по теме прототипного наследования.

  • @pashkes
    @pashkes 4 ปีที่แล้ว +4

    Круто, заполнил пробелы в прототипах. Дякую)

  • @anatolii.vorobiov
    @anatolii.vorobiov 4 ปีที่แล้ว +3

    Здравствуйте, хотел уточнить на счёт второго способа при наследовании. У вас написано Square.prototype = Object.create(prototype), но почему не используется запись Square.prototype = Rect.prototype; Зачем нужно создавать новый объект прототипа не могу понять. Аналогичный результат работы я получаю при данной записи. Буду благодарен за ответ

    • @TimurShemsedinov
      @TimurShemsedinov  4 ปีที่แล้ว +13

      Если после этого я буду добавлять методы в Square.prototype, то в моем слусае они будут только у экземпляров Square доступны, а в вашем - они и у Rect появятся

  • @oldodyn
    @oldodyn 4 ปีที่แล้ว +2

    Спасибо за видео. Непонятное и сложное теперь стало ясным.

  • @dianashakirova2614
    @dianashakirova2614 ปีที่แล้ว +1

    Ох,намучилась я с этим прототипным наследованием.Прочитала кучу статей от learn JavaScript,mdn…,но поняла только сейчас🤍Спасибо

    • @TimurShemsedinov
      @TimurShemsedinov  ปีที่แล้ว +4

      Картинки помогли? Не даром я старательно слайды изображал?

    • @dianashakirova2614
      @dianashakirova2614 ปีที่แล้ว +3

      @@TimurShemsedinov По большей части картинки мне и помогли.А то пока я читала,не могла понять разницу между __proto__ и prototype

  • @nickdunne1235
    @nickdunne1235 2 ปีที่แล้ว +1

    Спасибо. Жаль, что звук не очень. Но это не главное.

  • @OlekusGames
    @OlekusGames 4 ปีที่แล้ว +1

    Так рад, что нашёл ваш канал. Пока что у вас идеальные видеоролики по JS на ютубе. Спасибо

  • @timashoff
    @timashoff ปีที่แล้ว +1

    как всегда, спасибо!

  • @Antonio-fm1sq
    @Antonio-fm1sq 3 ปีที่แล้ว +1

    Спасибо!

  • @masterguyver84
    @masterguyver84 4 ปีที่แล้ว +1

    Спасибо, со второго раза только зашло вчера смотрел, сегодня пересмотрел и четко понимаю JS не Java. У Вас нет на гите таблиц с ссылками прототипов? По таблицам новичку просто ориентироваться, я бы даже распечатал на первое время.

    • @TimurShemsedinov
      @TimurShemsedinov  4 ปีที่แล้ว

      Что такое таблицы со ссылками прототипов?

    • @masterguyver84
      @masterguyver84 4 ปีที่แล้ว +1

      @@TimurShemsedinov То что Вы рисовали на лекции по прототипам на примерах, функций, классов, там действительно все наглядно описано, чтоб в памяти удержать надо распечатать и визуально посмотреть мне еще. Я понял уже как работает. Но для ориентира ОЧЕНЬ КЛАССНАЯ ЗАДУМКА.

    • @TimurShemsedinov
      @TimurShemsedinov  4 ปีที่แล้ว +3

      @@masterguyver84 ок, добавил ссылку в описание, можно инвертировать слайды и распечатать

    • @masterguyver84
      @masterguyver84 4 ปีที่แล้ว

      @@TimurShemsedinov Спасибо удалось скачать!!!

  • @kirillpospolitaki860
    @kirillpospolitaki860 3 ปีที่แล้ว

    Спасибо большое, родной КПИ помогает и 8 лет спустя)