JavaScript Примеры. Prototype, This, Классы, Контекст, Наследование

แชร์
ฝัง
  • เผยแพร่เมื่อ 28 ก.ย. 2024

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

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

    Ссылка на GitHub исходники тут: t.me/js_by_vladilen/201
    Получить профессию Frontend разработчика - bit.ly/3npPYt7

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

    крутейшее объяснение, без всякой воды

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

    Спасибо за урок!

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

    Пожалуйста запили курс по docker. Буду очень благодарен !

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

    Однозначно лайк, спасибо.

  • @ДеткиеНочники
    @ДеткиеНочники 3 ปีที่แล้ว

    Как всегда круто!

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

    Отличные примеры !!!

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

    Отличный ролик спасибо!

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

    Отличная подача!!

  • @top-mma-news
    @top-mma-news 4 ปีที่แล้ว +1

    Посмотрел сперва введие в ЖС на 6 часов ролик, потом весь плейлист Сложный JS простыми словами, после EcmaScript и теперь дошел до этого и вроде по чуть чуть начинают въезжать, непросто конечно, но получается по чуть чуть. ES6 это конечно как с жигуля на бмв пересесть)). Интересно был бы еще подобрый разбор Proxy, Reflect, Generator. Спасибо)

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

    На примере ToDo Можно рассказать примеры!?За ранее спасибо!

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

    ПЛЗ БОльше алгоритмов, подробных паттернов проектирования, структур данных, реальных примеров как написать код лучше!!!! СПАСИБО!!!!

  • @ПавелСавостин-щ8ч
    @ПавелСавостин-щ8ч 2 ปีที่แล้ว +1

    Много неточностей, которые вводят в заблуждение новичков с других языков
    1) Почему в функция Cat принимает options , а в Animal.apply(this, arguments) - используется слово arguments и все это работает, создается впечатление что arguments обозначает все входящие аргументы - это стоило напомнить
    2)th-cam.com/video/cTlxzxsFbDQ/w-d-xo.html понятно что не приватные поля, а просто поля, но причем тут инстансы данного класса?
    В остальном очень хорош!

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

    Спасибо друг )))

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

    Очен хорошо обисняеш

  • @АндрейПоляков-э7щ
    @АндрейПоляков-э7щ 4 ปีที่แล้ว +1

    Мне кажется, что явное лучше не явного и лучше если функция должна принимать аргументы, то и написать function(...arg) вместо function(), а потом тащить устаревшие arguments.
    developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Functions/arguments

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

    Владилен Спасибо!)777

  • @Almas-2002
    @Almas-2002 4 ปีที่แล้ว

    Спасибо за урок и хотелось бы улучшить алгоритм свой на этому тему можешь придумать что-то или гайды всякие поснимать .когда что то пишу время на это много трачу спасибо тебе!!!

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

    Thanks a lot .
    The best video about function prototypes, classes, inheritance.

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

    Спасибо большое!

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

    Вам было бы удобнее использовать Quokka)

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

    Крутой гайд без воды и чрезмерных усложнений. Спасибо!

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

    Сделай видос по map и тому подобным штукам, спасибо 👍

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

      Глянь пока что уже есть на канале)

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

    Спасибо 👍

  • @vicar-martyr
    @vicar-martyr 4 ปีที่แล้ว +137

    Очень ждем курс по алгоритмам на JS

    • @Vlad-fn6si
      @Vlad-fn6si 4 ปีที่แล้ว +3

      лудше по 1 алгоритму за раз, и не более 20 минут о то трудно потом воспринимать инфу

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

      Серьезно?) А язык для алгоритмов имеет роль?)

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

      Лучше от Стэнфорда пройдите Algorithms Part 1 и 2. Все остальное в ну сегменте будет своровано либо оттуда, либо с Кормана....

    • @vicar-martyr
      @vicar-martyr 3 ปีที่แล้ว

      @@dmenshikov спасибо посмотрю

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

    Спасибо за такой качественный контент

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

    Крутой контент. Очень помогает.
    Спасибо что ты это делаешь .
    Расскажи ещё глубоко про функциональное программирование. Очень сложно для пониманияя. Например про функцию curry, partial application , function composition, как делать максимально гибкие функции которые принимают функции как аргументы в разном виде. Спасибо. Это будет очень полезно

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

      Немного про фп есть в ролике про лодаш

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

      @@VladilenMinin да, спору нет. Там все это немного затрагивается. Спасибо за контент. Но все равно это там в контексте lodash. По сути можно подумать, зачем разбираться в таких сложных функциях если можно уже взять ее из лодаш где они лежат)) лучше конечно саму суть понять как они работают внутри лодаш чтобы самому их писать когда надо. Функциональное программирование для новичков это сложно. Особенно когда требуется сохранить контекст и сделать функцию максимально гибкой

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

    Как все легко и понятно!! Спасибо Владиленчик !!

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

    огонь!

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

    Алгоритмы - отличная идея.

    • @1001-w5q
      @1001-w5q 4 ปีที่แล้ว +1

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

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

      @@1001-w5q привет, скинь ссылку плиз

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

      @@1001-w5q хорошая книжка

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

    Спасибо, Впадилен! Ваши уроки очень помогают)

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

    Спасибо

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

    19:23 а почему нельзя просто присвоить Cat.prototype = Animal.prototype без Obect.create справа

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

    Спасибо за вашу работу, Владилен!

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

    Хахахаха - "Самое сложное в прототипах придумать имя кота" :)

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

    Владилен, здравствуйте. Если есть возможность, то ответьте пожалуйста. Почему, когда я создаю класс Cat и при помощи prototype создаю для него отдельный метод, а потом наследуюсь от класса Animal, то мне хост среда браузера пишет: Uncaught TypeError: Cat.SET is not a function at

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

    Кравчик!

  • @DEN-tg1yp
    @DEN-tg1yp 4 ปีที่แล้ว

    class Human {
    constructor (options) {
    this.name = options.name
    this.age = options.age
    }
    greeting () {
    console.log(this.name, 'greets you!')
    }
    }
    class GratefulMan extends Human {
    constructor(options) {
    super(options)
    this.isHappy = options.isHappy
    }
    commenting (forWhom) {
    console.log(forWhom, '- ты лучший!!! Спасибо за подробное объяснение! Успехов тебе во всех твоих проектах!')
    }
    }
    const person = new GratefulMan({name: 'Denis', age: 27, isHappy: true})
    console.log(person)
    person.commenting('Владилен')

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

    Спасибо, было очень познавательно. Про алгоритмы с радостью бы послушал.

  • @НиколайГрубляк-х9п
    @НиколайГрубляк-х9п 4 ปีที่แล้ว +1

    Спасибо за труды, Владилен!
    Невероятно понятно и полезно!

  • @СергейАртемчук-ф5л
    @СергейАртемчук-ф5л 4 ปีที่แล้ว

    "Как Сделать График на Canvas с Анимациями с Нуля" Хорошо бы в виде серии уроков или хотя бы прокомментировать этот ролик более подробно?

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

    Алготирмы точно зайдут).

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

    Алгоритмы плз )

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

    Класс, спасибо за старания

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

    Thanx

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

    Как всегда контент на высшем уровне!
    Отдельное спасибо за погружение с основы JS.

  • @ПавелРузанкин-м1ж
    @ПавелРузанкин-м1ж 4 ปีที่แล้ว +14

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

    • @1001-w5q
      @1001-w5q 4 ปีที่แล้ว

      В инете есть классный сайт с объяснением паттернов на тайпскрипте. Там намного больше примеров. Его несложно найти

    • @Дмитрий-ч1в5ы
      @Дмитрий-ч1в5ы 4 ปีที่แล้ว

      @@1001-w5q Исчерпывающая информация для поисков, в интернете есть сайт, говоришь?))) Ссылку бы

    • @1001-w5q
      @1001-w5q 4 ปีที่แล้ว

      @@Дмитрий-ч1в5ы да, но он первый выдается, я подумал, что у всех так будет)
      Вот: refactoring.guru/design-patterns/typescript

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

      Frontend guru, Владилен тоже этот сайт советовал в Ексель курсе

    • @ПавелРузанкин-м1ж
      @ПавелРузанкин-м1ж 4 ปีที่แล้ว

      @@1001-w5q ну таким образом можно вообще видео уроки не смотреть... Документация то по любой теме найдётся. А всем хочется именно на практику посмотреть

  • @MrByte-le9is
    @MrByte-le9is 4 ปีที่แล้ว +7

    Коты собаки это хорошо, но понятнее когда в конце реальные задачи показываешь

    • @Дмитрий-ч1в5ы
      @Дмитрий-ч1в5ы 4 ปีที่แล้ว +5

      Да черт бы меня побрал, если котов и собак нет в реальности!

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

    spasibo

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

    Предлагаю рассказать про объект Intl, чтобы рассказать о нём массам.

    • @Дмитрий-ч1в5ы
      @Дмитрий-ч1в5ы 4 ปีที่แล้ว

      Согласен! Очень полезный объект, но очень редко вижу чтобы его использовали.

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

      @@Дмитрий-ч1в5ы сам про него узнал случайно

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

    Спасибо, очень доходчиво

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

    Будет урок как придумывать имена животным?

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

      Сам в поиске

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

      @@VladilenMinin Например, кот - Леопольд, Матроскин, леопард - Барсик, пёс - Шарик, змей - Горыныч, лошадь - Юлий, дракон - Мушу, волк - Забивака
      В общем вариантов масса)

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

    Котик говорит MEOW!)) Спасибо за видео!!!

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

    У меня вызывает боль работа с событиями скролла,mousewheel delta как что высчитывать,а так же touch события,инерция и т д

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

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

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

    продолжай пожалуйста в таком же духе!

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

    Алгоритмы.

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

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

  • @СевериновРоман
    @СевериновРоман 3 ปีที่แล้ว

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

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

    класс! спасибо большое

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

    Супер, большое спасибо

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

    Вы допустли ошибку на 38:44 в объяснении. Правильное утверждение как раз в том, что стрелочкая функция создаёт область видимости, но не имеет собственного контекста - это разные вещи. Уверен, в одном из следующих видео ещё затронете эту тему, потому решил поправить. Желаю успехов и спасибо большое за видео!

    • @1001-w5q
      @1001-w5q 4 ปีที่แล้ว

      Да, просто не так сформулировал

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

    шикардос бро, как обычно =)
    хотел узнать подробней на что влияет если мы в старом способе не определяем явно prototype,constructor ?
    на сколько я понимаю может не корректно работать проверка на класс через например instanceof.

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

    Привет, Владилен! Огромное спасибо за твой труд! Ты мотивируешь меня прокачивать свои мозги и двигаться дальше.
    Буду безмерно благодарен, если посоветуешь какие ни-будь ресурсы или книги для развития логического мышления непосредственно в программировании. Спасибо!

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

    Самое сложное в объяснении prototype придумать название кота!))))..Владилен лучший!_!_!_!_!_!

  • @странствие
    @странствие 4 ปีที่แล้ว +2

    Тот момент, когда Владилен создаёт класс кошки с использованием ES5 синтаксиса, однако тут же пишет "const"))

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

      Да это похуй, фраза - самое сложное в прототипах это придумать название кота, вот это убило

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

      Владилен красава, уроки супер, всё что нужно мне увидеть более наглядно и просто - я просто нахожу у тебя на канале, спасибо за такой контент , от души - благодарочка!

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

    Ничего нового, как обычно 🔝ТОП🔝 контент . . .

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

    Опять примеры с животными( Я, как новичок, уже начитался в учебниках про животных. Увидев ролик ждал реальных примеров ООП на примере сервиса, самопальной cms, других реальных задач... А тут опять животные( Спасибо, конечно, за ролик, но хочется реальных примерах а не абстрактной хрени, которая, имхо, только ухудшает понимание применения(

    • @Дмитрий-ч1в5ы
      @Дмитрий-ч1в5ы 4 ปีที่แล้ว +5

      Боюсь, что, если человек не может понять суть на абстрактных примерах, то у него большие проблемы. Все программирование - это абстракция и ее уровни. Не в обиду, просто считаю, что основы и должны быть показаны на самых абстрактных примерах.

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

      А что именно Вам непонятно на таких примерах? вместо абстрактных примеров попробуй придумать сам свои и подставить, ты удивишься - подумаешь 20 минут, может 30 и все поймешь) занимайся

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

      @@magerrrr Не понятно как это используется в реальных задачах. Я никогда не сталкивался с реальными задачами, так как только учусь, а по работе занимаюсь в основном только фронтом. У меня нет опыта, но я очень легко учусь и действительно за 20-30 минут пойму. Я пойму. Но зачем мне тогда тратить время на этот ролик? Такие же примеры в учебниках! А канал Владилена и его ролики хороши тем, что тут есть настоящие "боевые" примеры. Чего я и ждал от этого ролика.

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

    Nice good

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

    Привет Владлен, запили видос по Nest.js прикольный фреймворк для серьезных проектов.

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

    Лайк и спасибо за контент. Вопрос небольшой про класс, кручу JS на работе но только вникаю в тонкости, много кода легаси смотрю. Так вот у тебя в определении Animal нужно же проверки делать передали "options" или нет? Потому что если нет то функция будет крашиться в "options undefinied". Просто в огромных проектах столько данных и условий что постоянно приходится проверять входные данные.

  • @IT-Svyatoslav
    @IT-Svyatoslav 4 ปีที่แล้ว

    Владилен, крутой контент!

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

    Владилен, можешь записать видео что нужно знать фронту на 2020 год

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

      Могу ответить, если вкратце то все

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

      Html 5, css 3, bem, scss/sass, css module, Es6, js, webpack, Babel, eslint, ide(vs code, webstorm), git, git flow, framework(любой на выбор), npm, node(немного), и наверное это не весь список, а там под каждым что я назвал ещё кучи гавна

  • @StormShadow-p9x
    @StormShadow-p9x 4 ปีที่แล้ว

    Хотелось бы узнать гораздо подробнее в реальных ситуациях про Rest Spread операторы, так как в теории понимаю что они делают но не понимаю как применить в реальной работе

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

      На канале уже есть подробные ролики

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

    Класс

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

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

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

      Очень много уже дал в курсе, ссылка в описании

  • @АртурБеленченко
    @АртурБеленченко 4 ปีที่แล้ว +1

    Владилен, Вы самый лучший frontend-блогер ютуба! Спасибо Вам👍

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

    42 воистину магическое число! 😀

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

    Го видос про сокеты на node.js и на фронте

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

    Hi Владилен. Please more videos about REACT

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

    Спасибо!

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

    Благодарю, как всегда пушка-бомба 👍🏿🔥🔥🔥

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

    Murzik )

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

    Спасибо за видео, но одно важное уточнение: котик says "Meow"
    🙃

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

    Thanks so much for all you do, very useful content!!!

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

    А если вы не знаете про новые ролики, то у меня на канале есть новый ролик по новым роликам))

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

    Dependency injection давай

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

    А для чего наследование в реальных проектах используется (помимо добавления интересных функций для типов данных)? Классы предметной области наследуются (такие как Animal, Account, Department, Employee и т.д.) или же это больше для разработки фреймворков (возможно окошки наследуются, компоненты и другие технические классы)?

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

      для того чтобы код был более гибким для изменений, прочитайте про SOLID, там много всяких примеров с наследованием.

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

    🔥

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

    У этого плэйлиста не будет продолжения чем больше три урока?

  • @МаксимИсаев-ъ5о
    @МаксимИсаев-ъ5о 4 ปีที่แล้ว

    Владилен, когда про Next.js ?

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

    хорошо мне нравится, продолжай дружище 👏

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

    Очень ждем курс по Vue JS.....

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

    Ставлю лайк перед просмотром!

  • @вадимрадион-л8з
    @вадимрадион-л8з 3 ปีที่แล้ว

    +5

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

    👍

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

    Сортировка - отличная идея

  • @v.demchenko
    @v.demchenko ปีที่แล้ว

    плохо что не затронут момент со стрелочными функциями в классах

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

    +

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

    +