Что такое THIS в JavaScript? Как работает call, apply, bind?

Поділитися
Вставка
  • Опубліковано 18 жов 2024

КОМЕНТАРІ • 47

  • @АндрейЛ-д8т
    @АндрейЛ-д8т 8 місяців тому +13

    всего 9 минут, а стало понятнее, чем от кучи роликов по часу

  • @Zikyzi
    @Zikyzi Рік тому +12

    О, никогда не видел более понятного объяснения, чем в этом видео. Спасибо!

  • @ЮрийПлисковский-щ4щ

    После такого классного видео, вопросов про то как работает this быть не должно. Лайк.

  • @-Vladimir--
    @-Vladimir-- Рік тому +4

    Лучшее объяснение, очень просто и доступно без всякой мути. Лайк 100%.

  • @ksataburashi740
    @ksataburashi740 Рік тому +40

    У меня ухо левое болит теперь

    • @lostone390
      @lostone390 5 місяців тому

      Он слева, значит звук будет слева.

  • @maksims.3867
    @maksims.3867 3 місяці тому +1

    Класс, очень понятно) Если что в VSC: schift+alt+{стрелка вниз} - скопировать текущую строку вниз; ctrl+/ - закомментарить/разкомментарить

  • @Vse-po-Faktu
    @Vse-po-Faktu 6 місяців тому

    Посмотрел раз 5, повторил, создал сам аналогичные объекты и пришло понимание! Спасибо!

  • @demimurych1
    @demimurych1 Рік тому +25

    00:00:15 *this это ссылка на контекст*
    Открываем официальную спецификацию языка JavaScript:
    *1) Читаем - Глава 9.4 Execution Context*
    Которая содержит определение того, что такое контекст в JavaScript
    Понимаем, что *this в JS никогда и не при каких обстоятельства не ссылается на контекст*
    *2) Читаем - Глава 13.2.1 The this keyword*
    Которая содержит определение того, что такое this в JavaScript и какие данные с ним связываются.
    Еще раз убеждаемся, что this в JavaScript не ссылается на контекст. И никогда не ссылался.
    Понимаем что this - это идентификатор, который присутствует во всех функциях, выполнение которых приводит к созданию Environment, свойство [[ThisBindingStatus]] которых не lexical.
    То есть в настоящее время, идентификатор this, всегда присутствует во всех функциях, кроме тех которые заданы как Arrow Function.
    Идентификатор - это сущность которая определяется при помощи var/let/const.
    Если перевести все это с официального языка, на язык которым говорит автора видео - this это обычная const переменная, которая *всегда присутствует в любой функции кроме arrow function*
    То есть, если происходит выполнения кода внутри функции, заданной как function, то у Вас ВСЕГДА есть заранее предопределенный идентификатор const this = ...
    *Правила связывания this с данными*
    1. Использование new expression с функцией конструктором приводит к тому, что внутри этой функции this будет связан с пустым обьектом. Например:
    function doThing() {
    [...]
    }
    new doThing();
    приведет к тому, что внутри doThing, идентификатор this будет связан с пустым обьектом
    2. Использование методов call apply bind приводит к тому, что this будет связан с тем что заявлено в этих методах
    3. Использование dot нотации, this будет связан с тем что идет перед dot. Например:
    var theObj = {
    name: "demimurych",
    sayName: function() {
    console.log('this: ', this);
    }
    }
    theObj.sayName(); // Вызов в дот нотации. this будет связан с theObj
    var doThing = theObj.sayName;
    doThing(); // Вызов НЕ в дот нотации, this будет связан, в зависимости от strict, либо с глобальным обьектом либо с undefined
    *Вместо ИГОГО*
    1) Контекст в JavaScript ни при каких обстоятельствах не может быть связан с this.
    *this это не контекст*
    2) this это идентификатор, который всегда задан на момент выполнения Normal Function
    3) То с чем связан this, зависит от того, КАК вызвана normal function
    4) Всем рекомендуется хотя бы раз в жизни прочесть спецификацию

    • @артёмкоролёв-ю6е
      @артёмкоролёв-ю6е Рік тому

      О,мурыч живой.

    • @raff_m_d6971
      @raff_m_d6971 9 місяців тому +4

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

    • @swave2720
      @swave2720 8 місяців тому +2

      Это база

  • @maksymkostiv6973
    @maksymkostiv6973 Рік тому +7

    Очень круто объяснили спасибо. Но со звуком какая-то беда .

  • @НайтиСебя-у6щ
    @НайтиСебя-у6щ 3 місяці тому

    Спасибо! Вы отличный учитель! Все понятно.

  • @asifabbasov3801
    @asifabbasov3801 10 місяців тому

    По больше таких подробных разборов пожалуйста 🙏
    Спасибо за разбор this

  • @ThomasBlack452
    @ThomasBlack452 3 місяці тому

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

  • @stan553
    @stan553 3 місяці тому +1

    Поймал разработчик золотую рыбку:
    Рыбка:"У тебя есть 3 желания".
    Программист:"Хочу дракона".
    Рыбка:"О, пожалуйста, будь реалистом".
    Программист:"Тогда я гочу понимать ключевое слово this в JS".
    Рыбка:"Дракона какого цвета ты хочешь?"

  • @РоманНекрасов-ы2м
    @РоманНекрасов-ы2м 9 місяців тому

    четко пояснил, даже я понял)
    спасибо!

  • @romanpit4you361
    @romanpit4you361 7 місяців тому

    Спасибо, очень информативно!

  • @Евгения-з5с2ц
    @Евгения-з5с2ц 5 місяців тому +1

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

  • @mashavasilieva
    @mashavasilieva Рік тому +4

    Ого, спасибо, очень полезно!

  • @nolightnohope3302
    @nolightnohope3302 3 місяці тому

    Спасибо

  • @zagorsky1769
    @zagorsky1769 11 місяців тому

    Объяснение отличное, спасибо

  • @gregdmitriev2784
    @gregdmitriev2784 Рік тому +2

    ужасно когда звук - моно... спасибо за ролик, круто объяснил

  • @h1sha706
    @h1sha706 3 місяці тому

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

  • @greatfellowdmc
    @greatfellowdmc Рік тому +2

    Эльбрус. Совы. 2020. Нужно было сделать доклад на 1 минуту, потом питчить его перед одногруппниками. Один из саааамых лютейших фэйлов в моей жизни в плане выступления перед публикой)) Жутко волновался, на половине доклада впал в дичайшую панику, сказад "извините, что-то я себя плохо чувствую" и тупо ушёл))) Когда пришёл в себя, только Тарас мне написал, спросил как я, рассказал подобную историю из своей жизни, поговорил со мнрй) Поддержал, одним словом) Не хочу сказать, что все остальные преподаватели и персонал в Эльбрусе плохие, ни в коем случае! В Эльбрусе все офигенные) Но в тот момент Тарас был сууупер офигенным!)
    P.S.: следующий доклад на 15 минут запитчил хорошо))

  • @darinka6024
    @darinka6024 Рік тому +1

    Круто, спасибо Тарас 🔥

  • @senniagordinskaya4051
    @senniagordinskaya4051 7 місяців тому

    Лучшее видео!

  • @Antioss_A
    @Antioss_A Рік тому

    Самое понятное объяснение! Спасибо большое

  • @СергейСомов-м8ы

    Очень ёмко и понятно

  • @ИльфатГ
    @ИльфатГ Рік тому

    Привет, Тарас! А где применяется эти перемены?)

  • @zerox9646
    @zerox9646 Рік тому +5

    со звуком в один канал идет

  • @diatm1506
    @diatm1506 Рік тому

    Хм а как когда в стрелочной функции пробросить this?

    • @B123-m4r
      @B123-m4r Рік тому

      А для чего? Используй стандартное объявление функции, если тебе нужен this. Иначе this будет ссылаться на вышестоящий скоуп, если у тебя там this используется, в противном случае на глобальный объект.

  • @ChabarovskWalket
    @ChabarovskWalket 9 місяців тому

    Спасибо, единственное нормальное обьяснение

  • @MrVaxlak
    @MrVaxlak Місяць тому

    Вообще не понятно что такое this, как определяется явно/неявно

  • @MomomolChenel
    @MomomolChenel 7 місяців тому

    монтажер явно не "фулл-стек". как можно было так со звуком .... и ничего год с этим не делать :с в ютубе есть встроенные инструменты для этого

  • @СергейСомов-м8ы

    Со звуком трабл. Но объяснение хорошее, приходится терпеть

  • @ayhow
    @ayhow 8 місяців тому

    левое ухо речь, правое музон ебашит

  • @freerade1510
    @freerade1510 11 місяців тому

    Разработчик, который смотрит на клавиатуру во время печати. Кхм...

    • @SingleFeniks
      @SingleFeniks 8 місяців тому

      Это как геймер, который смотрит на экран во время игры? 🤨

    • @freerade1510
      @freerade1510 8 місяців тому

      @@SingleFeniks
      Или что?

    • @ThomasBlack452
      @ThomasBlack452 3 місяці тому

      От этого объяснение стало неверным?
      Я вот лично клавиатуры типа маковских с трудом перевариваю. Клавиши вообще не чувствуются ибо высотой в миллиметр. Пипец неудобно. Я бы тоже смотрел на клавиатуру, хотя со своей родной клавы пишу не глядя.
      Про автора не знаю, мб это его личный ноут, но тем не менее сути сказанного им это не меняет.

  • @epicamv27
    @epicamv27 3 місяці тому

    зачем усложнять и создавать this если модель и так ясно ? Я просто этого понять не могу

  • @alexleshenko
    @alexleshenko 28 днів тому

    Ну скажу очень поверхностное объяснение, какой контекст у стрелки и откуда она его вытянет где? Ты если тему не шаришь нах людям даешь такое джуновское объяснение
    Как обычная функция его теряет и в каких ситуациях… короче уволься

  • @Вячеслав-е6ц4ь
    @Вячеслав-е6ц4ь 9 місяців тому +2

    Спасибо.