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) Всем рекомендуется хотя бы раз в жизни прочесть спецификацию
Очень понятное объяснение. После просмотра множества роликов, у меня всё больше складывается ощущение, что сложность освоения программирования - это сложность объяснений. Почти везде объясняют или сложно или путанно. Я уверен, всё можно объяснить на пальцах и с простыми примерами. А когда человек поймёт суть, тогда уже можно углубляться. А не сразу наваливать всё, что известно по теме на три часа.
Поймал разработчик золотую рыбку: Рыбка:"У тебя есть 3 желания". Программист:"Хочу дракона". Рыбка:"О, пожалуйста, будь реалистом". Программист:"Тогда я гочу понимать ключевое слово this в JS". Рыбка:"Дракона какого цвета ты хочешь?"
Эльбрус. Совы. 2020. Нужно было сделать доклад на 1 минуту, потом питчить его перед одногруппниками. Один из саааамых лютейших фэйлов в моей жизни в плане выступления перед публикой)) Жутко волновался, на половине доклада впал в дичайшую панику, сказад "извините, что-то я себя плохо чувствую" и тупо ушёл))) Когда пришёл в себя, только Тарас мне написал, спросил как я, рассказал подобную историю из своей жизни, поговорил со мнрй) Поддержал, одним словом) Не хочу сказать, что все остальные преподаватели и персонал в Эльбрусе плохие, ни в коем случае! В Эльбрусе все офигенные) Но в тот момент Тарас был сууупер офигенным!) P.S.: следующий доклад на 15 минут запитчил хорошо))
А для чего? Используй стандартное объявление функции, если тебе нужен this. Иначе this будет ссылаться на вышестоящий скоуп, если у тебя там this используется, в противном случае на глобальный объект.
От этого объяснение стало неверным? Я вот лично клавиатуры типа маковских с трудом перевариваю. Клавиши вообще не чувствуются ибо высотой в миллиметр. Пипец неудобно. Я бы тоже смотрел на клавиатуру, хотя со своей родной клавы пишу не глядя. Про автора не знаю, мб это его личный ноут, но тем не менее сути сказанного им это не меняет.
Ну скажу очень поверхностное объяснение, какой контекст у стрелки и откуда она его вытянет где? Ты если тему не шаришь нах людям даешь такое джуновское объяснение Как обычная функция его теряет и в каких ситуациях… короче уволься
всего 9 минут, а стало понятнее, чем от кучи роликов по часу
О, никогда не видел более понятного объяснения, чем в этом видео. Спасибо!
После такого классного видео, вопросов про то как работает this быть не должно. Лайк.
Лучшее объяснение, очень просто и доступно без всякой мути. Лайк 100%.
У меня ухо левое болит теперь
Он слева, значит звук будет слева.
Класс, очень понятно) Если что в VSC: schift+alt+{стрелка вниз} - скопировать текущую строку вниз; ctrl+/ - закомментарить/разкомментарить
Посмотрел раз 5, повторил, создал сам аналогичные объекты и пришло понимание! Спасибо!
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) Всем рекомендуется хотя бы раз в жизни прочесть спецификацию
О,мурыч живой.
Не видя, кто написал коммент, но, прочитав пару строк, понял, что это Мурыч. Выражаю безграничную благодарность автору за контент)))))
Это база
Очень круто объяснили спасибо. Но со звуком какая-то беда .
Спасибо! Вы отличный учитель! Все понятно.
По больше таких подробных разборов пожалуйста 🙏
Спасибо за разбор this
Очень понятное объяснение.
После просмотра множества роликов, у меня всё больше складывается ощущение, что сложность освоения программирования - это сложность объяснений. Почти везде объясняют или сложно или путанно.
Я уверен, всё можно объяснить на пальцах и с простыми примерами. А когда человек поймёт суть, тогда уже можно углубляться. А не сразу наваливать всё, что известно по теме на три часа.
Поймал разработчик золотую рыбку:
Рыбка:"У тебя есть 3 желания".
Программист:"Хочу дракона".
Рыбка:"О, пожалуйста, будь реалистом".
Программист:"Тогда я гочу понимать ключевое слово this в JS".
Рыбка:"Дракона какого цвета ты хочешь?"
четко пояснил, даже я понял)
спасибо!
Спасибо, очень информативно!
Супердоступно и понятно, спасибо большое!
Ого, спасибо, очень полезно!
Спасибо
Объяснение отличное, спасибо
ужасно когда звук - моно... спасибо за ролик, круто объяснил
Очень понятно и просто, но о многом он не рассказал, к примеру что в node и браузере разные глобальные области видимости
Эльбрус. Совы. 2020. Нужно было сделать доклад на 1 минуту, потом питчить его перед одногруппниками. Один из саааамых лютейших фэйлов в моей жизни в плане выступления перед публикой)) Жутко волновался, на половине доклада впал в дичайшую панику, сказад "извините, что-то я себя плохо чувствую" и тупо ушёл))) Когда пришёл в себя, только Тарас мне написал, спросил как я, рассказал подобную историю из своей жизни, поговорил со мнрй) Поддержал, одним словом) Не хочу сказать, что все остальные преподаватели и персонал в Эльбрусе плохие, ни в коем случае! В Эльбрусе все офигенные) Но в тот момент Тарас был сууупер офигенным!)
P.S.: следующий доклад на 15 минут запитчил хорошо))
💜
Круто, спасибо Тарас 🔥
Лучшее видео!
Самое понятное объяснение! Спасибо большое
Очень ёмко и понятно
Привет, Тарас! А где применяется эти перемены?)
со звуком в один канал идет
Хм а как когда в стрелочной функции пробросить this?
А для чего? Используй стандартное объявление функции, если тебе нужен this. Иначе this будет ссылаться на вышестоящий скоуп, если у тебя там this используется, в противном случае на глобальный объект.
Спасибо, единственное нормальное обьяснение
Вообще не понятно что такое this, как определяется явно/неявно
монтажер явно не "фулл-стек". как можно было так со звуком .... и ничего год с этим не делать :с в ютубе есть встроенные инструменты для этого
Со звуком трабл. Но объяснение хорошее, приходится терпеть
левое ухо речь, правое музон ебашит
Разработчик, который смотрит на клавиатуру во время печати. Кхм...
Это как геймер, который смотрит на экран во время игры? 🤨
@@SingleFeniks
Или что?
От этого объяснение стало неверным?
Я вот лично клавиатуры типа маковских с трудом перевариваю. Клавиши вообще не чувствуются ибо высотой в миллиметр. Пипец неудобно. Я бы тоже смотрел на клавиатуру, хотя со своей родной клавы пишу не глядя.
Про автора не знаю, мб это его личный ноут, но тем не менее сути сказанного им это не меняет.
зачем усложнять и создавать this если модель и так ясно ? Я просто этого понять не могу
Ну скажу очень поверхностное объяснение, какой контекст у стрелки и откуда она его вытянет где? Ты если тему не шаришь нах людям даешь такое джуновское объяснение
Как обычная функция его теряет и в каких ситуациях… короче уволься
Спасибо.