ООП Классы. Часть 1. JavaScript v.2.0

แชร์
ฝัง
  • เผยแพร่เมื่อ 20 ต.ค. 2019
  • js2.itgid.info
    React курс: itgid.info/react
    Этот урок: js2.itgid.info/unit?unit=es6-oop
    VK: webdev_zero
    Курс практический JavaScript: js.itgid.info
    JSRules: t.me/jsrules

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

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

    Александр, спасибо! Самое лучшее объяснение ООП на действительно понятном живом примере. Без дурацких Кроликов, наследуемых от Животных, и Красных Машин - от Машин вообще. 35 минут удовольствия для ушей и мозга! :)

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

    Дружище, ты очень круто объясняешь! Так держать! С удовольствием смотрю твои ролики, давно на тебя подписан и всегда жду новых роликов. Не бросай только канал )

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

      он не любит когда ему тыкают ) А преподватель действительно мощный, еще и всегда на связи и стабильно проверяет и если что разъясняет д/з

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

    Именно благодаря этому видео я понял: для чего нужны классы, как реализуются и т.д.. Всё оказалось гораздо проще. Огромное спасибо за урок)

  • @vasyl_trots
    @vasyl_trots ปีที่แล้ว

    Дякую за уроки!!! Інфа залітає з пів слова))) У Вас талант!

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

    Всё больше становится Java-подобным! Мне нравится!

  • @artem-ot9kq
    @artem-ot9kq 3 ปีที่แล้ว +1

    Александр у вас талант обьяснять, сколько я перелопатил в интернете никак не мог понять что это за чертовщина и как ее применять, а тут за первые 15 минут я узрел истину , браво учитель.

  • @user-oi2wr6gg4i
    @user-oi2wr6gg4i 11 หลายเดือนก่อน

    Спасибо! Замечательный урок: коротко, понятно и по существу :)

  • @Max-kr4ie
    @Max-kr4ie 4 ปีที่แล้ว +22

    Как всегда радуют глаз заставки для видео) Классная фишка канала!

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

      Max Shevchenko Спасибо! Приятно!

  • @Denik-is6gi
    @Denik-is6gi 8 หลายเดือนก่อน

    Очень хорошее объяснение! И в целом очень нравиться ваш подход к объяснениям и подаче материал!!! Спасибо!!

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

    Александр, здравствуйте!
    Слежу за вашим каналом с перерывами уже почти год, посмотрел многие Ваши видео и хочу выразить благодарность за такую хорошую подачу информации. Именно Ваши уроки помогают мне отвлечься от сухой теории и познать многие моменты на практических примерах. Вы подаете информацию так, что ее довольно таки просто усваивать. Кроме того всё подаётся так, что с каждым новым видео интерес к программированию увеличивается все больше и больше. Спасибо Вам огромное!

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

      Артем Кунгуров спасибо за отзыв и за то, что остаётесь с нами ! Очень рады, что Вам полезны наши уроки! От канала желаем Вам дальнейшего развития! ☘️

  • @user-uf8nw6uc9z
    @user-uf8nw6uc9z 4 ปีที่แล้ว +1

    ну кртуо же , круто объясняете. Обязательно курс куплю у вас! Больше видео на канале и развития его же!!!

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

    Приятно было слушать. Для новичка трудно понимать из-за обилия терминов

  • @user-yx4ov2xx8s
    @user-yx4ov2xx8s 4 ปีที่แล้ว +2

    Уже 43 тыс. подписчиков!!! 👍👍👍 Совсем недавно было 40, когда стикеры запустили. Значит наша поддержка работает, а вы делаете классные видео и курсы. Прогрессируем вместе!💪

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

      Давид Терами Ваша поддержка очень важна для нас! Вместе мы сила! Спасибо, что остаётесь с нами!

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

    Спасибо за этот урок. Очень полезно слушать про ООП от того, кто профессионально использует ООП.
    Мне урок зашел, видимо потому, что я уже писал на ООП на С++ и в Python. От меня этого не требуют, но мне интересно для общего развития. Только спустя пару месяцев, я начал понимать, что ООП - это очень круто, особенно, когда надо было модернизировать код. А есть такие проекты, где без ООП вообще никак. Так что тема важная, подана толково, еще раз благодарю)

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

    Александр, а где вторая часть про ООП ??? 34:50

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

    Рубрика "О сложном просто" продолжается) Спасибо,доступно очень и понятно)Ждёмс get-ры и set-ры.

  • @userman6193
    @userman6193 ปีที่แล้ว

    Я классы ещё не изучал вовсе, однако, мне ясно о чём это видео и как это работает - объяснение отличное. Спасибо)
    Полезу в документацию и посмотрю видео ещё раз 🤝 .

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

    Вполне понятно. Спасибо, у вас дар преподавания.

  • @user-hf1yz3ef3h
    @user-hf1yz3ef3h 3 ปีที่แล้ว

    Я много смотрела видео, но просмотрев Ваше, я наконец-то поняла, что такое ООП и с чем его едят) Огромное спасибо)

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

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

  • @user-yf2er5vr8q
    @user-yf2er5vr8q 2 ปีที่แล้ว

    С удовольствием смотрю твои ролики

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

    Огромное спасибо за ваши видео уроки, как всегда доступно и понятно( отдельное спасибо что показываете на реальных примерах).

  • @user-go6ht9uo9p
    @user-go6ht9uo9p 4 ปีที่แล้ว +6

    Спасибо. Ждем геттеры, сеттеры

  • @ApxaHreJIsKy
    @ApxaHreJIsKy 2 ปีที่แล้ว

    большое спасибо за объяснение простым доступным языком! Всё более чем понятно, информативно и без воды!

  • @user-bf3jf7mj3s
    @user-bf3jf7mj3s 4 ปีที่แล้ว +1

    Супер понятное и интересное объяснение. Спасибо огромное.

  • @NeedForHeavyMetal
    @NeedForHeavyMetal 2 ปีที่แล้ว

    Довольно наглядно! Спасибо! Курс хороший, рекомендую всем!

  • @user-pm5yq4mr3i
    @user-pm5yq4mr3i 4 ปีที่แล้ว +3

    Дуже доступно! Дуже чекаю 2 частини)

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

    Одно из топовых уроков в рамках курса
    очень многое понял благодаря этому уроку
    лайк

  • @user-wz1tn7fn4s
    @user-wz1tn7fn4s 4 ปีที่แล้ว +1

    Круто спасибо, народ хочет продолжения ООП в JS )

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

    Просто супер урок !!! Спасибо за старания !!!

  • @user-ii8no1yh9k
    @user-ii8no1yh9k 4 ปีที่แล้ว

    Отличное видео! Спасибо! Очень помогло разобраться с классами.

  • @user-kv7mn5im7b
    @user-kv7mn5im7b 3 ปีที่แล้ว +1

    Очень доступно, супер, спасибо вам!!!

  • @MrVIPKent
    @MrVIPKent ปีที่แล้ว

    Найскладніша тема, принаймі для мене

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

    Спасибо, с нетерпением жду продолжения!

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

      Виктория Подзолко спасибо за комментарий!

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

    Спасибо!!!! Очень полезный и нужный урок! Ждал его много месяцев!!!!

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

      Dr. Zlad спасибо за комментарий! Приятно, что Вам было полезно!

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

    Спасибо за урок. Вы молодец

  • @alexforos5425
    @alexforos5425 2 ปีที่แล้ว

    Спасибо, как всегда все подробно и понятно!

  • @pfk9025
    @pfk9025 2 ปีที่แล้ว

    Все здорово объясняешь! Спасибо)

  • @user-rc6jp3em2o
    @user-rc6jp3em2o 4 ปีที่แล้ว +2

    очень достойное объяснение всё понятно!!! Спасибо

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

      Александр Руденок спасибо за комментарий!

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

    Спасибо огромное! Все понятно и просто объяснено

  • @user-pm5yq4mr3i
    @user-pm5yq4mr3i 4 ปีที่แล้ว +2

    Будь ласка, ще відео) дуже треба якнайшвидше)
    І дякую за простоту

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

    26:55 , когда вызываете m2.myAlert(this.message), почему передаете параметром this.message , если в 29 строке уже есть все? Спасибо за урок.

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

    ждемс 2 видос про ООП

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

    Александр, ОЧЕНЬ ждём второй части ООП!!!! Скажите, когда запишите?

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

    Спс за урок!)

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

    супер, больше видео про ооп!!!!

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

      Дмитрий Д спасибо!

  • @liubomyr-peteliuk
    @liubomyr-peteliuk 4 ปีที่แล้ว +1

    Спасибо огромное! Лично мне всё понятно, интересно. Сейчас занимаюсь созданием нейросети, а именно генетического алгоритма, и на 150 + строк одни методы (и ещё столько сама реализация алгоритма) и всё в одном файле. Есть вопрос: я JS код запускаю не в браузере а через node, как импортировать файлы классов?

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

    очень доступно объяснено)

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

      Iren Ginger спасибо за комментарий!

  • @ellegre6546
    @ellegre6546 ปีที่แล้ว

    Отлично!

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

    Столько всего пересмотрел и не мог понять смысл, а тут сразу понял

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

    Просто супер. Спасибо

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

      azizbek pinjebaev спасибо! Приятно!

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

      @@TheAgressio главное я понял "const" параметры функции

  • @user-fy7pv5cc7c
    @user-fy7pv5cc7c 2 ปีที่แล้ว

    Спасибо

  • @user-dk2cn2hz7n
    @user-dk2cn2hz7n 4 ปีที่แล้ว

    Часто при использовании функционального подхода результатом вывода присваивают true или false есть желание при неудаче то есть false выводить причину в виде exception какого то исключения что бы понимать что пошло не по плану. Как я понимаю это возможно только с классами при создании поля отвечающего за исключения?

  • @user-qf9dg4xx4b
    @user-qf9dg4xx4b ปีที่แล้ว

    Дякую за урок! ...

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

    Извините за глупый вопрос, почему скрипты подключаются в конце body в html файле, если есть атрибут defer и можно их подключить в шапке?

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

    Очень понравилось, хотелось бы полностью закрыть вопрос ООП. Сколько практических занятий в платной версии?

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

    В целом понятно.
    Но побольше примеров применения на практике

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

      Диванный Аналитик на курсе JavaScript 2.0 к этому уроку 20 задач для практики

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

    спасибо

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

    Дякую! Було все зрозуміло пояснено. Виникло одне питання: А якщо тих класів багато, наприклад 20, то і 20 файлів треба підключати в html?

  • @mylife-myart4916
    @mylife-myart4916 4 ปีที่แล้ว

    я так понимаю про get-ы и set-ы еще нет видео? Очень доступно и понятно, спасибо!!

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

    Как-то не зашло, но буду пересматривать ещё раз

  • @morgenshternofficial8241
    @morgenshternofficial8241 ปีที่แล้ว

    Добрый вечер.Подскажите , пожалуйста , как обращаться к методу myAlert() в классе Alert, через обьект , созданный с помощью класса Alert2.Спасибо

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

    все доступно и понятно. вначале теория про классы из learnJS, потом видос и норм.
    А где глянуть работу с DOM через JS, спс!

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

    Лайк и подписка!!

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

      Oleg Gribanov спасибо! Приятно!

  • @volynolf
    @volynolf 2 ปีที่แล้ว

    Я так понимаю, JS интерпретатор классы не загружает вначале как это он с функциями делает? Они должны быть обязательно объявлены в коде перед использованием?

  • @user-kn4lf4wv4r
    @user-kn4lf4wv4r 3 ปีที่แล้ว +1

    бомба!

  • @user-wf5jv1me2b
    @user-wf5jv1me2b 4 ปีที่แล้ว

    Супер ! Дякую !

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

    супер !

  • @user-im8ej6sl8y
    @user-im8ej6sl8y 4 ปีที่แล้ว

    В Delphi есть хорошее правило: все классы начинаются с большой латинской T. И их видно в коде сразу (при условии, конечно, что программист все остальные переменные и объекты называет не с этой буквы).

  • @user-jo7jx7lf1l
    @user-jo7jx7lf1l 3 ปีที่แล้ว

    Подскажите, пожалуйста, почему выводит ${a} вместо переменной a в параграфе?

  • @user-gi1hy5no1m
    @user-gi1hy5no1m 4 ปีที่แล้ว +1

    Кто изучал Java просто будут щёлкать ООП. Кстати если хотите полное и просто объяснение про ООП и почему он в 1000 раз лучше функционального программирования - советую прочитать главу про ООП из книги Head First Java (не JavaScript)

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

    по паттернам есть планы видосы делать?

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

    прикольно

  • @WockeezChannel
    @WockeezChannel ปีที่แล้ว

    Как понять когда надо наследоваться от основного класса? Ведь добавить иконку мы могли и в основном классе

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

    Примеры несложные, потому что объяснил очень понятно. Я бы отозвался как "просто и понятно о достаточно сложном"

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

    Я вот скачал один слайдер на jQuery, и понял что просто так в боевом проекте на смогу использовать, потому что мне нужно инициализировать его несколько раз, а код написан в процедурном стиле, так что мучаюсь переписываю под ООП, чтоб как в крутых плагинах создать новый объект слайдер1 от класса слайдер и настраивать его как нужно, и генериться он будет в js что бы добавляя новый слайдер не париться о копировании тегов и идентификаторов и тд, надеюсь у меня получился

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

    32:15 правильно подключаем Классы

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

    главное я понял this и параметры функции конкретно. этот звено не хватило мне

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

    Вместе this мы б ставили constructor?

  • @WockeezChannel
    @WockeezChannel ปีที่แล้ว

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

  • @dr.sergei9656
    @dr.sergei9656 11 หลายเดือนก่อน

    это прямо как на джаве

  • @user-ub5pm9sp8c
    @user-ub5pm9sp8c 4 ปีที่แล้ว

    Друга частина буде?

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

    Что если создать переменную без led ??? Она становится глобальной или как ???

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

      без let. Да, ее объявит JS.

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

    Top

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

    08:24 рефакторинг кода на ООП

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

    На практике круто объяснять - я в свое время когда учил ООП чуть крыша не поехала.
    Приводили примеры наследования разными алегориями - типа вот есть класс Зверь - это родительский класс для всех остальных - у них есть общие свойства - кровь, лапы, шерсть и т.д. А дочерние классы это зайчики, лисички, волки и т.д - они наследуют класс Зверь и все его свойства + у каждого свои добавляются шерсть черная, уши длинные, скорость движения, и методы одни бегают, другие прыгают, третьи ползают.
    НАсмотрелся этой хрени - а потом делаешь какой то проект - а там уже нет зайчиков и лисичек - там есть элементы страницы или данные с которыми надо работать - сидишь тогда и думаешь а что же такое сущность и как работать с классами - где их применить. Может класс это вся страница - а все манипуляции на ней это методы - типа открытие меню, нажатие на кнопку, или может сущность это отдельно меню, отдельно кнопка, отдельно слайдер.
    Короче крутая идея доносить ООП практическими примерами - а не каким то теоретическим бредом.

    • @liubomyr-peteliuk
      @liubomyr-peteliuk 4 ปีที่แล้ว

      Мы часом не учились в одного и тоже преподавателя?)))

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

      @@liubomyr-peteliuk хз но это очень популярная метода так объяснять ООП. Я таких персонажей несколько встречал. )))

    • @liubomyr-peteliuk
      @liubomyr-peteliuk 4 ปีที่แล้ว

      ​@@igorbond2823 Лично мне кажется, что такой метод преподавания подходит детям, а не зрелым умам. Для более зрелых как раз подходят методы Александра.

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

      @@liubomyr-peteliuk та да, это слишком абстрактно, ну или когда объясняют ООП не по конкретному языку, а в целом идею просто что бы знать а не применять.

    • @liubomyr-peteliuk
      @liubomyr-peteliuk 4 ปีที่แล้ว

      @@igorbond2823 Согласен.

  • @user-pf5hb8tx5v
    @user-pf5hb8tx5v 4 ปีที่แล้ว

    когда ооп 2 часть ?

  • @Vladimir-yh2dl
    @Vladimir-yh2dl ปีที่แล้ว

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

    я потерял логику зачем нужна функии теперь как мне знать что делать методом что функиею!?

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

    JS становится похожим на Java,
    не удивлюсь если эволюционирует до состояния настольных приложений на чистом JS

    • @liubomyr-peteliuk
      @liubomyr-peteliuk 4 ปีที่แล้ว

      не удивляйтесь! ))) Уже и такое есть!

  • @user-oi1ui9rm7x
    @user-oi1ui9rm7x 2 ปีที่แล้ว

    Насколько мне известно, для вызова метода родительского класса нужно перед методом писать super, а не proto.

    • @mashasterx
      @mashasterx 8 หลายเดือนก่อน

      Благодарю, я тоже уже пришла к этому выводу, видимо Алексей чуточку оговорился
      Сколько документации я уже не перечитала)

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

    Голос, на голос Amway из" Мира танков "похож)})

  • @user-ks7rc2vp2f
    @user-ks7rc2vp2f 4 ปีที่แล้ว

    А почему вы ставите точку с запятой в конце кода? это же необязательно.

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

      Прост

    • @Max-kr4ie
      @Max-kr4ie 4 ปีที่แล้ว

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

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

      Оооо братан)))) Когда будешь писать много когда НА ОДНОЙ странице - сам начнешь их ставить- в первую очередь для себя))) Так легче код воспринимать. Да и в других языках привычка полезная. Короче ставь- и потом поймёшь

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

    Все понятно, но повторить не смогу. Понятно и ещё одно - учить - не переучить...

  • @talivel118
    @talivel118 2 ปีที่แล้ว

    6:55 кому-то от js стало плохо;)

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

    Как же музыка в начале наводит жуть

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

    А почему нельзя просто взять и дописать в начальный класс дополнительное своиство ?? зачем столько много писать ?

    • @mashasterx
      @mashasterx 8 หลายเดือนก่อน

      Чтобы не сломать класс которым пользуется какой-нибудь другой разработчик (которому не нужны твои дополнительные свойства)
      То есть ты создаешь свой класс наследуясь от основного и наполняешь его свойствами и функциями нужными только тебе

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

    123

  • @user-im8ej6sl8y
    @user-im8ej6sl8y 4 ปีที่แล้ว +1

    Лекция похожа на попытку объяснить принципы работы ДВС с помощью описания как работают педали и рычаги автомобиля.
    Неверный сам подход к ООП.
    Само слово "ООП" начинается с "Объектный". Вот и начинать надо с объектов. Что это такой "Фрукт", который имеет поля, свойства, методы и события. Этот объект существует не сам по себе, а должен быть создан специальным механизмом - конструктором как экземпляр некоторого класса, абстрактного описания "Фрукта", от которого и получает , как ДНК, все его поля, свойства, методы и события. При этом сам класс может быть просто "Объектом", а может быть потомком одного из имеющихся классов - предков. Ну и далее собственно про классы - про инкапсуляцию, наследование и полиморфизм, области видимости и прочее, прочее, прочее.
    И только после этого собственно переходить к примерам.
    Из плюсов отмечу относительно хороший язык и подготовку лектора. За что лайкаю и подписываюсь

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

    Можете называть переменные нормально, а не a b c?