ООП в JavaScript. Классы, свойства, методы

แชร์
ฝัง
  • เผยแพร่เมื่อ 15 ต.ค. 2024
  • Мои курсы itgid.info/course
    Этот урок: itgid.info/uni...
    Курс ООП JavaScript itgid.info/cou...
    Помощь Насте itgid.info/sit...
    Инстаграмм мамы Насти: www.instagram....
    Карта Приватбанк мамы Насти (Мария Гайдученко): 5168755420228781
    Телеграмм канал JavaScript Rules: t.me/jsrules
    Объектно-ориентированное программирование в JavaScript. Прототипы, прототипное наследование, __proto__, наследование на основе прототипов

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

  • @ГармонистВитюша
    @ГармонистВитюша 2 หลายเดือนก่อน +2

    Начинал учиться у Александра года три назад. Полтора года уже работаю и через пару месяцев ухожу в более серьезную разработку. Могу сказать, что у Александра одни из самых лучших курсов. Лучшей подачи базовых знаний и представить сложно. Советую.
    Вернулся, что бы подтянуть ООП. Скоро пригодится.
    Автору удачи и сил.

  • @ОстапПрагнення
    @ОстапПрагнення 3 ปีที่แล้ว +32

    Смотрел сначала Минина и нИчерта не понял, а здесь все просто и ясно, как будто в сказке. Поетому держи Лайк без раздумуваний

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

      Минин объясняет в роликах углубленное изучение, он это говорил в каких-то роликах. По этому не нужно расчитывать на понимание если ты новичок

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

      Минин тоже хорош по-своему. Я стараюсь у них обоих учиться

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

      Да, Владилен более углубленно и с технической стороны. А здесь простым понятным языком, чтоб понять принцип работы. Круто! Спасибо Вам!

    • @АленаЕршова-ъ5ю
      @АленаЕршова-ъ5ю ปีที่แล้ว

      +1

    • @pavlov.konstanit
      @pavlov.konstanit ปีที่แล้ว

      Все хорошо объясняют👍🏻

  • @АлександраВознесенская-я8к

    Спасибо за потрясающие уроки :))
    Когда в ваших уроках вылезают ошибки, наоборот хорошо :) Во-первых лучше запоминается то, где ошибся, а во-вторых - мне как новичку как то спокойнее становится. Даже профессионалы где то запинаются, и ошибки начинаешь воспринимать как нормальное явление, а не то что у тебя руки не из того места 😆 👍

  • @edwardwide9859
    @edwardwide9859 2 ปีที่แล้ว +5

    Дай вам бог здоровья! Шикарный урок, лучший преподаватель!

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

    Алекс. Повторюсь, буду не оригинален, но, Ваши уроки бесценны. Настолько четко и доходчиво. Без запинок, без "эк бек мек". Всё четко и по полочкам. Без какой-то лишней информации. Именно как по документации, но доходчиво. Спасибо. Рад, что нашел Ваш канал. Среди тонны всякого бреда, где вместо обучения - мешанина.

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

    Спасибо за урок, сначало искал что то подобное на немецком ну и на английском, время потерял, и толь сдесь, толково и без воды. Привет из Германии!

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

    Все так доступно объяснили, лайк. Учу js + react остановился на классах не мог найти понятного объяснения. Теперь, все ясно

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

    Спасибо за отлиные уроки! Прекрассный материал и изложение!

  • @Lebedev.D
    @Lebedev.D 3 ปีที่แล้ว +3

    Александр спасибо большое, очень понравился урок , всё конспектировал с удовольствием и слушал вас предельно внимательно!

  • @ТатьянаЛ-л9э
    @ТатьянаЛ-л9э 3 ปีที่แล้ว +4

    благодаря видео поняла логику классов! спасибо большое!!!

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

    Большое спасибо, Александр!

  • @Виктория-д7э4я
    @Виктория-д7э4я 3 ปีที่แล้ว +4

    Огромное спасибо за подробное объяснение!🙂

  • @Lena-io9ye
    @Lena-io9ye 3 ปีที่แล้ว +2

    Спасибо, очень подробно объяснили. Я наконец-то поняла))

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

    за такую подачу и 2 лайка не жалко))) ООП решает! Лайк от гуру по кодингу - СЕООНЛИ

  • @ЛитвинЛюбомир-р1ч
    @ЛитвинЛюбомир-р1ч ปีที่แล้ว

    Давай помолимось богу щоби ми не тупили😂
    Ти найкраще пояснюєш яву скрипт. Дякую

  • @АлександрМайстр
    @АлександрМайстр 8 หลายเดือนก่อน +1

    Александр спасибо

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

    Такой вопрос. Насчет модульной разработки, не будет ли работать, если мы не будем подключить User.js к html, а экспортировать и импортировать напрямую в script.js?

  • @МедетБерикбаев
    @МедетБерикбаев ปีที่แล้ว

    Здравствуйте Александр! Я благодарен вам за ваши видеоуроки, здесь все понятно вы объясняете.
    Я хотел спросить, есть ли видеоурок на тему F.prototype? Если есть можете указать ссылку? Я уже изучал прототипное наследование. Только вот непонятно F.prototype. Был бы рад если объясните эту тему, или если эта тема уже была обсуждена ранее, и ссылку напишете...

  • @МарияВасиленко-я5к
    @МарияВасиленко-я5к 3 ปีที่แล้ว +3

    Спасибо, очень интересно и понятно обьясняете)

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

    хорошо объяснил про конструктор и супер. Наконец то понял их :)

  • @kain1677
    @kain1677 2 ปีที่แล้ว +5

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

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

    Наверное лучшее объяснение ооп в js

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

    Алекс, для вызова console.log достаточно просто написать clg, так быстрее => экономит ваше и наше время :)

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

      Сокращений очень много в js. Но эти курсы для начинающих а не для Синьоров.

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

    Что такое класс
    Я пол года убил что б понять что такое класс.
    И понял это только в ооп php.
    Хотя начинал с джс.
    ооп в джс хоть и идет из коробки, но оно кастрированное. Да и далеко не всегда оно там надо.
    Норм ооп только в ts. angular.
    По сути это чертеж.
    И когда вы что то делаете по чертежу, вы это делаете и изменяете как угодно но только не меняете при этом сам чертеж.
    Вы используете его как пример, но не трогаете его. Вы можете его скопировать и копию(объект) уже крутить как сможете, но не сам оригинальный чертеж(класс) вы не меняете(если конечно сильно захотеть... и любите жесткий махочь один против всех)
    Класс - это оригинальный чертеж.
    Объект- это как минимум копия чертежа.
    Другой пример.
    Вы приходите в какое либо учреждение, где вам нужно написать конкретную заяву.
    На стене висит образец. Вам осталось только его скопировать и внести свои изменения, но при этом не трогая сам образец.
    Пример из повседневного джс:
    Есть ассоциативный массив засунутый в переменую user, в ключах которого хранятся - значения и функции(свойства и методы).
    И вот когда вам он понадобиться, вы делаете копию из него userClone, и работаете только с копией. А он остаётся - как не тронутый экземпляр. Что бы не произошло user будет не тронут.
    Конечно это всё грубое упрощение.
    Но в корне что то очень похоже.
    Свойства- это переменные.
    Методы - это функции.
    Как уже сказал Алекс:
    Яркий пример из реальной практики - это пользователи.
    Вроде все одинаковые, но с разными возможностями.
    Жду критики в коментах.

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

      А я их быстро освоил, понятно конечно что могут быть сложные структуры и тд, но сам принцип до меня дошёл, потому что сначала я изучил прототипы, функции-конструкторы, наследование, F.prototype, что все типы в JS это экземпляры встроенных классов Number, Array, Fuction, и тд, им всем эти конструкторы дают в прототип объект с методами, что из экземпляра объекта можно создать ему подобный, вот после всего этого, мне классы дались проще, уже чувствовал что это синтаксический сахар, есть конечно свои особенности, но в целом ничего сложного, просто я с теорией вместе всё это учил, а не тупо методом тыка.

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

      Понять их очень легко, и работать тоже.
      А вот писать прогу в ООП стиле для меня пока беда

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

      @@stephencurry8078 все понятно в теории. Открываешь код реального серьезного приложения или библиотеки и все, жопа полная ))) Вроде ООП с одной стороны все упрощает, а с другой намного усложняет, особенно если копаться в чужом коде. Жаль, что крайне мало роликов с разбором реальных приложений и объяснений, почему именно так. Бесят больше всего ролики, где заявляется следующее "ну для простоты давайте напишем код без применения ООП". И складывается впечатление, что авторы уроков сами знают ООП лишь в теории )))

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

      @@phat80 да в теорий просто.
      Классы, объекты. Но когда приложение усложняется, тогда уже начинаешь терять нить.

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

      Та же беда была пока не сел за пайтон. Сейчас опять вернулся на JS (нужен для фронта). И всё стало намного понятнее

  • @ВячеславНиколаевич-у2н
    @ВячеславНиколаевич-у2н 4 ปีที่แล้ว +2

    Вполне доходчиво! Спасибо!

  • @СтаниславОкулов-о2ч
    @СтаниславОкулов-о2ч 2 ปีที่แล้ว

    Спасибо за урок! Мне помогло.

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

    Александр, скажите пожалуйста на какой микрофон вы записываете звук?

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

    Вопрос наверное нубский, ибо я просмотрел только первые 4 видео, и дальше может быть будет ответ.
    Есть ли в классах JS свойства класса?
    Поясню.
    В пайтоне, я могу в классе задать свойства, которые будут у объектов, но так же могу задать свойства самому классу, и не относятся к объектам созданным из класса.
    Например, таким образом очень просто посчитать сколько объектов было создано у класса.

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

    Знаком, немного, с Java и возник вопрос: есть ли в js конструктор по умолчанию(без параметров, задаётся неявно при создании класса) и что насчёт модификаторов доступа: public private protected и прочие?

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

      MrG1V1 вроде все да. А вот протектед - не знаю.

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

      TypeScript

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

      Конечно, можно унаследоваться от встроенного класса: Array, Date и тд, в нашем унаследованном классе можно будет задать методы для экземпляра, они все будут в его прототипе, а у прототипа прототипа будут методы от родителя, тем самым, когда мы не объявляем в унаследованном классе constructor, он автоматом вызывается родительский. Защищённые поля есть, но не на уровне языка, их эмулируют и есть соглашение программистов, что поля начинающиеся с _ являются внутренними для структур данных, приватные тоже есть, уже на уровне языка, начинаются с #, но пока новинка и весьма сырая, есть проблемы при наследовании, так что все по старинке юзают защищённые поля, также можно примеси использовать и расширять поведение.

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

    Здравствуйте. Указанная ссылка "Этот урок..." фактически ведет на урок №2.

  • @ПетроПотрошенко
    @ПетроПотрошенко 3 ปีที่แล้ว +3

    Спасибо, отличное видео!

  • @chechenfromcanada3799
    @chechenfromcanada3799 5 หลายเดือนก่อน

    Классно ❤

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

    Считаю что будет более правильным не пустые свойства а по умолчанию задавать какие либо свойства чтоб не вызывало таких ошибок .

  • @Divanniy.Trader
    @Divanniy.Trader 4 ปีที่แล้ว +1

    Вижу видео от Александра, ставлю лайк

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

    Кто подскажет что за трек играет в начале?

  • @---mg7yi
    @---mg7yi ปีที่แล้ว

    Вот это другое дело..А то с этими __proto .... просто неудобно для восприятия)

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

    В теге script можно дописать type='module'

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

    Можно также добавить, что методы созданные вне конструктора попадают в прототип

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

    Подскажите почему в классе Student.js после вызова super.validatePassword возвращает ответ отUser.js(false), а блок кода следующий дальше( где this.passwor.length) ни него не выводит. В консоли только один false

    • @ЯнШацкий-п8ж
      @ЯнШацкий-п8ж 4 ปีที่แล้ว +1

      Выводит false потому что пароль "7778888" < 10 . true будет если пароль поменять на больший.

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

      @@ЯнШацкий-п8ж но ведь в классе откуда вызывают этот метод "7778888" < 6 условие. вроде должно быть true

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

    Интересно неужели нельзя подключать файлы прямо в js файле? в этом языке есть модификаторы доступа?

    • @Nik-fl7lv
      @Nik-fl7lv 4 ปีที่แล้ว

      можно)

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

    Александр, у вас в описании указана ссылка на второй урок на вашем сайте а не на третий

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

    Супер👍👍👍👍👍😊

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

    Лучший👌

  • @МедербекДубанаев-п2й
    @МедербекДубанаев-п2й 8 หลายเดือนก่อน +1

    👍

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

    В js5 может конструктор наследоваться от конструктора?

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

    Не понятно,почему метод validatePassword написан без слова 'function'.Так можно что-ли?

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

    Супер)

  • @АннаАндреевна-ь1и
    @АннаАндреевна-ь1и 2 ปีที่แล้ว

    Спасибо!

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

    все отлично!

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

    super понятно

  • @name-yy9yu
    @name-yy9yu 4 ปีที่แล้ว +1

    класно, дякую)

  • @ЕгорМуравьёв-с2э
    @ЕгорМуравьёв-с2э 4 ปีที่แล้ว

    Ребят, я тугодум и поэтому прошу объяснить: в чем разница между прототипированием и классом?)

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

      Сам точно не знаю: тоже новичок. Если я не ошибаюсь, то в js есть 2 способа использования ООП: прототипное и классовое. Можно найти в интернете и почитать. Я только изучаю, не углублялся

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

      @@jeb_7749 нет, в JS только прототипирование. Классы появились просто в синтаксисе, а на самом деле ничего не изменилось, все так же работает на прототипах.

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

      @@jeb_7749 разницы нету, по этому желательно знать как работает прототипное наследование. Сейчас я ради этого тренируюсь, переписываю классы ES5 на ES6.

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

    спасибо!

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

    Спасибо

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

    thank you man

  • @РоманГирич-з5ш
    @РоманГирич-з5ш 4 ปีที่แล้ว

    20:05 классы по дефолту идут в строгом режиме, вроде как бы

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

    14:30 Подключение класса отдельным файлом

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

    Поимите благодарность! Учусь в Германии. Если бы у нас так всё объясняли!

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

      Попробуй взять книгу "ES6 и не только"

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

    Дякую

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

    А где дз

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

    Спасиба

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

    По моему мнению, этот урок перегружен информацией. Другие Ваши уроки понял сразу, в этом одно накладывается на другое (из одного файла в другой, плюс неизвестные метод extend) и с трудом улавливал логику повествования. В любом случае спасибо. Еще плюс ваших курсов, что задачи даете с нарастающей сложностью и первые задачи позволяют разобраться в синтаксисе и объявлении вообще сущностей. Это очень облегчает и эмоционально проще выполнять) когда не чувствуешь себя "дураком"))

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

    Здравствуйте, каждый класс в новом файле - это плохая практика и это не хорошо, считаю грубой ошибкой. Например : Будет 50 Классов и каждый в новом файле - это 50 запросов на сервер .
    Пример:
    10 человек по 50 запросов 500 запросов на сервер за секунду а то и менее секунды .
    Это очень плохая практика !!!!

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

    для закрепления классно, лучше на русском еще не видел.

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

    12:43 остановился

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

    Скучаю по старому оформлению превью

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

    Все знающие классическое ООП думают ну наконец то нормальные классы и наследование в JS появились с ES6 )))) а на самом деле под капотом происходят те же извращения что и были раньше. Но чтобы понять как работает Прототипное наследование в JS придётся погрузится и в эти извращения, потому что много приложений написанных в старом стиле и дабы знать что под капотом.

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

    like eje

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

    +

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

    +++

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

    Понятно, но нелегко.

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

    спасибо

  • @olegBilyi-n4j
    @olegBilyi-n4j 2 ปีที่แล้ว

    Дякую

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

    Дякую