Тёмный

Понимание javascript - замыкания, контекст, callback. 

Дмитрий Лаврик
Подписаться 57 тыс.
Просмотров 144 тыс.
50% 1

Волшебное слово this. Понятие контекста.
Способы вызова функций. Замыкания.
Коллбеки. Коллбеки и контекст.
js.dmitrylavrik.ru/

Опубликовано:

 

10 мар 2017

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 194   
@xanxan3256
@xanxan3256 7 лет назад
Самый лучший преподаватель, из тех кого я видел на ютубе. Умеет разжевать даже самые сложные вещи
@talas12341
@talas12341 6 лет назад
ты просто мало
@SakurUKR
@SakurUKR 6 лет назад
Парень действительно хорошо молвит, но есть ребята, которые как минимум не хуже. Подписка +
@dasshrs
@dasshrs 4 года назад
@@SakurUKR например? Очень интересно ещё посмотреть.
@maksym7094
@maksym7094 4 года назад
Да еще с отличным чувством юмора - 1:35:16
@user-oj2xh6tx5n
@user-oj2xh6tx5n 3 года назад
javaScript требует каждодневных тренировок, на канале @JavaScript_Quiz (телеграм) каждый день публикуются по 3 задачи в виде опроса с ссылкой на учебный материал, просто подпишись и прокачивайся.
@factotum5987
@factotum5987 7 лет назад
так, пересмотрим еще разок!
@IRONteam.
@IRONteam. 6 лет назад
Контекст в JavaScript похож на контекст в предложении: «Петя бежит быстро, потому что Петя пытается поймать поезд.» «Петя бежит быстро, потому что он пытается поймать поезд. Второе предложение звучит лаконичнее. Предметом предложения является Петя, и мы можем сказать, что контекст предложения - это Петя, потому что он в центре внимания в это конкретное время в предложении. Даже местоимение «кто» относится к Пете. this нам нужен для доступа к методам и свойствам объекта, который вызывает функцию, тем более, что мы не всегда знаем, имя вызывающего объекта. Необходимо усвоить всего одно правило для определения this: значение this, внутри функции, определятся не в момент создания функции, а в момент ее вызова. Значение this определяет то, как вызывается функция. Несмотря на то, что кажется как будто this ссылается на объект внутри которого был определен метод объекта. В глобальной области видимости, контекст ссылается на объект window, если скрипт не находится в строгом режиме "use strict". Когда мы используем строгий режим, значение this, в глобальной области видимости (в глобальных функциях и анонимных функциях), будет undefined.
@talas12341
@talas12341 5 лет назад
+
@user-uq4ix5ie3q
@user-uq4ix5ie3q 4 года назад
Превосходно объяснил 👍
@user-vf1iq7hf3j
@user-vf1iq7hf3j 4 года назад
Ну вот 58 минута у нас setInterval(timer.tick, 1000); у нас єсть обєкт timer ми у окна window визиваєм метод window.setInterval(tick, 1000); у нас вилетаєт ошибка у window нет time , elem. Ет понятно, но куда делся наш обєкт timer????
@MrPong-kb5kt
@MrPong-kb5kt 3 года назад
Низкий вам поклон, мистер
@gusmanpoliceman
@gusmanpoliceman 7 лет назад
Очень крутой урок.Раньше долго не мог понять эти темы. Рассказано "просто о сложно". Подобраны такие примеры из реальной жизни, для понимания на уровне повседневной жизни. Специалист своего дела.
@valerylutsevich8948
@valerylutsevich8948 7 лет назад
вебинар супер, после других языков никак не мог привыкнуть к колбэкам, и временами не до конца с this было понятно, давно слышал и про call( ), но не вникал, а сейчас благодаря просто шикарному объяснению Дмитрия в этом вебинаре, наконец, кажется все это стало точно понятным. Отдельное спасибо Дмитрий за постоянные акценты, что то-то наверняка должно быть непонятно, лично мне, именно это очень помогает.
@artyomsultanov5204
@artyomsultanov5204 6 лет назад
Интересно вас смотреть. На любой вопрос найдете объяснение! Ваши вебинары- это лучшее, что есть на ютубе о веб-программировании. Всем друзьям уже о вас рассказал и они довольны вашими вебинарами) Продолжайте в том же духе)
@user-up1bf7ri7j
@user-up1bf7ri7j 5 лет назад
Какой молодец! Многие свои знания демонстрируют без внимания на то, чтобы научить, а здесь все очень хорошо. Спасибо!
@castiliOR
@castiliOR Год назад
качество изображения не очень чёткое, но качество материала оооочень чёткое. Пересматриваю на одном дыхании
@slaincore
@slaincore 5 лет назад
Про замыкания и колбэки очень круто и просто объяснил! Лучше всех кого я смотрел на ютубе.
@2positive1
@2positive1 4 года назад
Как же доступно ты объясняешь. Благодарю!
@xenm85
@xenm85 3 года назад
и ты понял в чем суть замыканий и как надо с ними работать?
@uaplatformacomua
@uaplatformacomua 5 лет назад
Дмитрий просто Бог преподавания. Очень хорошо объясняет. Я прохожу эти темы почти впервые, так вроде понятно, но надо ещё почитать, порешать задачки, чтобы осознать полностью. Но объяснения очень наглядные, спасибо!!! Буду вас смотреть!!!
@PacoOfficial
@PacoOfficial 7 лет назад
чувак ты просто король обучающих видосов)) хоть я что то из материала и знаю, но все равно выучил совсем недавно, поэтому полезно повторить, попрактиковаться, и закрепить знания, поэтому большое спасибо!
@nickpravda3249
@nickpravda3249 7 лет назад
Дмитрий спасибо вам, 2 года назад я посмотрел ваш видосик по основам программирования, вы рекомендовали начинать с js, возможно, благодаря вам, работаю в it, в достаточно крупной компании. Продолжайте в том же духе! :)
@olegmaz3969
@olegmaz3969 7 лет назад
Николай, а сколько времени вы учились чтоб попасть на роботу?
@nickpravda3249
@nickpravda3249 7 лет назад
Верстку давно знал, но на любительском уровне, на работу пошел можно сказать сразу
@user-ir5xs8ne6l
@user-ir5xs8ne6l 6 лет назад
Коля Правда а расскажите поэтапно как вы изучили и на каком этапе изучения нашли работу?! И в какую сторону после js пошли изучать дальше?! Спасибо заранее большое. Если можно сюда написать lubimovanity@gmail.com. подскажите ,так сказать,младшему "брату" план действий по изучению?!
@mgersoukiasyan3626
@mgersoukiasyan3626 5 лет назад
@@user-ir5xs8ne6l Верстка - канал Web Design Master, Потом js чистый, потом vue.js
@xenm85
@xenm85 3 года назад
неужели купленный отзыв?
@omusatov
@omusatov 7 лет назад
Последний раз я с таким удовольствием смотрел уроки Игоря Борисова из Специалиста по php... Талантливо подаете, Дмитрий.
@user-vb1oy9ir1c
@user-vb1oy9ir1c 7 лет назад
Спасибо вам за вебинары
@user-gv1cq4jn1g
@user-gv1cq4jn1g 3 года назад
тупо лучший! смотришь один его ролик и потом начинаешь сам пробовать, уже с пониманием.
@VVhatsoever
@VVhatsoever 7 лет назад
Чудесно) спасибо!) Жизненные примеры очень радуют и способствуют пониманию!
@unistar42
@unistar42 6 лет назад
Потрясно! Я наконец познала коллбэки). И про замыкания я уже поняла, но повторить было оч.полезно.
@bitrixsovet448
@bitrixsovet448 7 лет назад
Спасибо, Дмитрий, вы очень круто объясняете - сразу открылись глаза на JS :) и пришло глубинное понимание. Даже пришли мысли, что и где в проектах было сделано неправильно, и как поправить :)
@user-yk3if2ku4e
@user-yk3if2ku4e 7 лет назад
Супер, мне понравился вебинар. Многое для себя уяснил и многое прояснилось.
@seanlangley7467
@seanlangley7467 6 лет назад
Спасибо за вебинар мучачо, снимаю перед вами свое сомбреро
@rinatvaliullov3247
@rinatvaliullov3247 7 лет назад
Хороший вебинар, не знаю почему, но только после него начало приходить понимание про this и области видимости
@yurabeliaev8695
@yurabeliaev8695 7 лет назад
Вижу Лаврика - ставлю лайк!
@1988proxy
@1988proxy 4 года назад
Спасибо Огромное за Урок!!!!!!!
@muhtarkunakov452
@muhtarkunakov452 4 года назад
Отличный контент наряду с книгой Симдянова по PHP где собственно тоже берется сразу с основ у вас наиболее адекватная структура и подача материала, спасибо огромное за ваши труды.
@SergiyAntonyuk_PhD
@SergiyAntonyuk_PhD 7 лет назад
Полезный вебинар. Спасибо!
@WashYourBack
@WashYourBack 7 лет назад
Хороший вебинар, время было "потрачено" с пользой.
@andreyandreich4858
@andreyandreich4858 6 лет назад
Дмитрий кросавчег, всё объясняет четко
@kimTier
@kimTier 6 лет назад
Спасибо большое! Просто реанимировал. Препод от бога.
@ScaleChannel
@ScaleChannel 7 лет назад
Все доступно объяснил, молодец ;)
@leader7700
@leader7700 7 лет назад
интересная подача инфы)) было интересно) спасибо)
@lapetitemort1666
@lapetitemort1666 6 лет назад
ООООООООО да наконец-то КТО-то это сделал доходчиво и внятно БЛАГОДАРЮ.....
@vovergg
@vovergg 4 года назад
Я изучаю JavaScript после Python. Действительно, для понимания единственная сложность - это асинхронность. Видео помогло прояснить некоторые моменты.))
@elenadanchenko276
@elenadanchenko276 Год назад
Спасибо вам большое!все очень понятно!
@andreymanaenko1638
@andreymanaenko1638 6 лет назад
Хорошо описал сложные вопросы. Очень часто задают такие вопросы на собеседованиях.
@user-mk2rm7uc7s
@user-mk2rm7uc7s 5 лет назад
супер, спасибо! долго билась с этой темой до этого видео
@vladimirkuzmin1953
@vladimirkuzmin1953 5 лет назад
Посмотрел первый раз, поплакал, пошел подучил основы) Вернулся через неделю, пересмотрел , уже понятно более менее) Через недельку напишу че за КАЛЛбэки такие и как их простым людям понять)
@serhiichernyshov7172
@serhiichernyshov7172 6 лет назад
один из лучших преподавателей js
@scripterdds8001
@scripterdds8001 7 лет назад
Димон, этот видос крутой, го еще жести и посложнее, чтобы у меня мозг совсем взорвался.Это испытание было пройдено и я всё понял.
@jsb7239
@jsb7239 3 года назад
Стоит пересмотреть! 👍🏻
@DHor9
@DHor9 Год назад
за этот урок - однозначно подписка
@enoon_23984
@enoon_23984 7 лет назад
Ну что тут можно сказать, вижу новые вебинары от Дмитрия, сразу ставлю лике.
@vazgenaleksanyan2929
@vazgenaleksanyan2929 5 лет назад
Все что надо смотреть, ищу с начало у Лаврика.
@PacoOfficial
@PacoOfficial 7 лет назад
чисто под меня урок, правда я уже знаю что такое замыкания)) так что буду смотреть ехуууу ты топ
@dmytrodemydenko3534
@dmytrodemydenko3534 5 лет назад
Идеально все обьяснил, спасибо!
@dezo103
@dezo103 3 года назад
Классно объясняешь, спасибо
@user-wd8hm2ro8e
@user-wd8hm2ro8e 7 лет назад
Господи, только благодаря вам я смог понять что делает this и перестал бояться ООП в языках в целом!
@xenm85
@xenm85 3 года назад
и ты понял в чем суть замыканий и как надо с ними работать? И чем ООП js отличается от классики?
@sdsaasdasd4683
@sdsaasdasd4683 5 лет назад
Дмитрий красава!
@SNSDfOu
@SNSDfOu Год назад
17 год, я был так молод и горяч
@alexandervasilenko1481
@alexandervasilenko1481 6 лет назад
Спасибо, очень полезно!
@rv6819
@rv6819 7 лет назад
Вебинар класс. Ссылочку для отзывов в вк тоже добавляй в описание!
@user-ss4ee3nc8r
@user-ss4ee3nc8r 6 лет назад
интересно рассказывает я даже не понял как час прошел и самые нужные темы
@tasker96
@tasker96 5 лет назад
Спасибо! Некоторые знания по JS были. Хотел узнать немного о замыкании. Так получилось, что узнал что за кулбэки, и как используються - кажется с этим я хорошо разобрался. А вот с замыканиями - я только понял что они используются для получения каких то переменных (обьектов или значиния) из функции которую интерпретатор в начале запуска проинициализировал, но мы еще не использовали, или уже вышли за границы её видимости. Как то так я понял. Вообщем мутно еще понимаю замыкание. И контекст связаный с замыканием так же плохо зашел. Буду разбираться с этим!) Можете книжку посоветовать хорошую по JS?
@ninzzo9867
@ninzzo9867 5 лет назад
это лучший урок по js ! чувак талант
@xenm85
@xenm85 3 года назад
мб. Так в чем суть замыканий в js?
@nazargavrilov873
@nazargavrilov873 10 месяцев назад
@@xenm85 замыкания - способность языка создавать приватный контекст. В функционале - где используется работа с валидацией полей это используется
@wepko
@wepko 6 лет назад
Спасибо ! за урок
@dmitriytyurnin4605
@dmitriytyurnin4605 7 лет назад
Браво! Супер!
@RinatYouldashbaev
@RinatYouldashbaev 6 лет назад
Про коллбэки с 1:16:00
@romanfedorov369
@romanfedorov369 6 лет назад
сенкс браза
@xCTPEJIOK17x
@xCTPEJIOK17x 5 лет назад
Спасибо! за ними и пришел!))
@romangorbenya
@romangorbenya 4 года назад
Очень хорошо!
@e_zelenkov
@e_zelenkov 6 лет назад
супер. очень доступно! было бы не плохо про promise такое же выложить!
@kani-akun
@kani-akun 2 года назад
Как к вам попасть на курс js, ? К сожалению курс начался , когда будет новый поток ?) недавно начала смотреть ваши уроки очень доходчиво объясняете.
@fenix_63
@fenix_63 6 лет назад
Урок супер
@vladk3111
@vladk3111 3 года назад
Добрый день. Спасибо за видео. Дмитрий, подскажите, 40:50 мы же здесь можем использовать делегирование событий, верно? Повесить на родительский div событие, и через event.target.closest('div) при клике на конкретный див - будет происходить событие. Эти два способа по своей сути равнозначны? Если есть какие-то нюансовые различия ? Спасибо
@david_shiko
@david_shiko 6 лет назад
Смотрю уже не 1 видео от этого автора, Потрясающие вебинары! где ссылка на покупку? Готов купить за миллион. Только слушателей обычно много, отвлекают своими глупыми шутками автора в комментариях.
@xenonist4502
@xenonist4502 7 лет назад
Спасибо огромное за урок, я всё понял) Материал отличный, покупать курс я, конечно же, не буду) (ибо школьник)
@user-mb8fr3ci6e
@user-mb8fr3ci6e 5 лет назад
Если я правильно понял, то в примере с таймером в первом случае передается ссылка на функцию ( timer.tick ) и ее уже setInterval вызывает в window. => ошибка. Во втором случае анонимная функция вызывает метод timer`a, который она видит по замыканию.
@volydymyr9897
@volydymyr9897 4 года назад
Единственное что скажу, если не понятно , практиуйтесь и пересматривайте уроки!! И все будет рано или поздно понятно) Я не мог понять до конца что такое контекст , call, apply .. Сейчас смотрю и для меня ето все просто елементарно выглядит) Терепение, все будет)
@romandavydov3738
@romandavydov3738 6 лет назад
Cool! All understandble
@persoundproducer
@persoundproducer 5 лет назад
а можно ли было на 31 строчку просто прописать elem.style.dispalay = "none"? В чем смысл именно делать параметром вызов?
@Sergey-vh3vj
@Sergey-vh3vj 6 лет назад
Не хватает навигации по стой длинному ролику, пол часа чтобы услышал про замыкание.. а так спасибо большое, весьма информативно.
@valeriavaleria9507
@valeriavaleria9507 5 лет назад
кот на 17-й минуте шикарный)
@espocada_official
@espocada_official 4 года назад
я подумал это человек с длинной рукой
@sergeyemelyanov8100
@sergeyemelyanov8100 5 лет назад
Спасибо!
@videoreactions979
@videoreactions979 6 лет назад
хорошо заходит, спасибо
@catshannon5064
@catshannon5064 6 лет назад
Дмитрий Лаврик, я нашел ошибку в вашем коде. Не return Math.floor(Math.random()*(max-min+1)); а return min + Math.floor(Math.random()*(max-min+1)); Ваш код работает нормально поскольку min = 0, возьмите другой min и работать не будет.
@user-be7pc2of8n
@user-be7pc2of8n 4 года назад
Так в прошлом уроке min + просто перенесено в конец строки: Math.floor(Math.random()*(max-min+1)) + min
@Ihor.Kuptsiv
@Ihor.Kuptsiv 4 года назад
смотрю на х1.25, годно:)
@user-er5ux4xv7e
@user-er5ux4xv7e 6 лет назад
спасибо за видос конечно. но то, что этот видос создан в качестве приманки на твои курсы, бесит нереально) и заканчиваешь всегда на самом интересном
@andykud63
@andykud63 6 лет назад
Про колбеки бы добавил что их можно вызывать не только в конце, а везде где надо ответвиться от основного кода функции
@roman--s
@roman--s 5 лет назад
ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-LM0tW2MZJZ4.html А как же event.target ? До изучения контекста всегда решал подобную задачу event.target или event.currentTarget по ситуации.
@Max_Reason
@Max_Reason 6 лет назад
Дмитрий, а почему вы говорите на 43:00, что только this можно применять и замыкание тут применить невозможно? Это же не так. Через замыкание можно решить данную задачу.
@ivansidorov5
@ivansidorov5 7 лет назад
Все подробно объяснил, про контекст стало понятно. Но с замыканиями я не понял, Дмитрий объяснил что это просто адресация к переменной к родительском пространстве имен. Но во всех примерах в интернете и книгах по замыканиям была какая-то жесть с возвратом функций и т.д. а тут о ней ни слова
@user-qh9yz2ro7r
@user-qh9yz2ro7r 7 лет назад
если функция находится в функции, то она видит все переменные родительской функции по правилу замыкания... А Дмитрий - он просто напросто избегает тавтологии и реально крутой преподаватель, потому и все так просто и понятно.. Если бы не его уроки- я бы никогда не понял ничего по програмированию... В который раз- благодарю за уроки и продолжаю учиться)
@freezinful
@freezinful 6 лет назад
звонок спине)
@BTL4JUR
@BTL4JUR 4 года назад
Бесценное объяснение, как дважды два. Человек свободно владеет тем, что объясняет.
@web4453
@web4453 4 года назад
Да это один из лучших преподавателей в инете, я даже могу сказать, что не знаю лучше чем он. На этапе верстки еще был вейап что-то наподобие, но там совсем детский сад, а тут уже программирование. Надеюсь этот человек получает достойную оплату своего труда.
@GrafKarlsonskiy
@GrafKarlsonskiy 5 лет назад
44:30 почему нет? В жизни же коту можно дать ускорение. И как потом дальность полета определить тогда, если параметр ускорение не передаем?
@user-vv3ue7rg8h
@user-vv3ue7rg8h 3 года назад
41:14 - Ещё можно анонимную функцию в onclick и туда items[i].classList.toggle('item-active'), только если в цикле писать не var i, а let i
@yakut54
@yakut54 3 года назад
Ёкарный бабай. Первый класс вторая четверть.... И чего тут непонятного было 4 года назад? )))
@mw2start729
@mw2start729 7 лет назад
Спасибо
@vovk1805
@vovk1805 7 лет назад
Как записаться на вебинар следующий?
@user-ri8ow3qh7l
@user-ri8ow3qh7l 7 лет назад
Да неужели, сколько лет я уже жду корс по javascript от лаврика.
@oleksiykurylyuk4696
@oleksiykurylyuk4696 4 года назад
Здравствуйте. Спасет оборачивание в анонимную немедленно вызываемую функцию (IIFE): items[i].onclick = function (x){ return activeItem}(i); Function activeItem(x){ Items[x].classList.toggle(‘item-active’) }
@saskirakosyan5268
@saskirakosyan5268 5 лет назад
а можно принимать addevantListener() metod без исползвания this?
@optimusprime9456
@optimusprime9456 3 года назад
Хорошо знаю JS, просто было интересно, чему там учат на ютубах) Неплохие объяснения + человек хотя бы умеет нормально разговаривать, а не как какие-нибудь хаудихо) Занудные замечания: За использование window.onload без веских причин - надо бить по рукам, а не поощрять!) 37:53 - querySelectorAll возвращает не массив, а список элементов NodeList. console.log( document.querySelectorAll("body") instanceof Array ); // false console.log( document.querySelectorAll("body") instanceof NodeList ); // true 55:57 - вместо innerHTML хорошо бы писать textContent, если туда передается именно текст, а не HTML. 1:05:40 - Функция срабатывает только потому что конкретно тут min равен нулю. Она должна выглядеть так: return Math.floor( Math.random() * (max - min + 1) + min ); 1:27:12 - if (steps === 0) ошибка. Функция срабатывает просто потому что 1000 / 50 получается целым числом. Было бы дробным, оно бы прошло мимо нуля в минус и никогда бы не останавливалось. Нужна проверка if (steps
@user-xo6yn6mk7j
@user-xo6yn6mk7j Год назад
А что по js посоветуешь ?
@Farmatique
@Farmatique 6 лет назад
лайк не глядя
@aleksejsaleksejevs7818
@aleksejsaleksejevs7818 5 лет назад
Учитель! Подскажите пожалуйста, на 1:30:19 вы создаёте функцию callback, которая выполниться после того как элемент исчезнет, так зачем же создавать эту функцию, если можно в if statement после clearInterval, прописать исчезновение?
@MrDannyCotta
@MrDannyCotta 5 лет назад
Aleksejs Aleksejevs насколько я понял тут фишка в том что можно любое действие прописать , а не определенное - то есть функция становится универсальной и её можно применять к разным объектам с разным колбэком . Просто в параметр функции где привязан колбэк можно записать любую функцию
@phpdevelopercode636
@phpdevelopercode636 3 года назад
Я при событии вместо this использовал объект event тоже работает 39.09
@victormog
@victormog 5 лет назад
К чему тогда этот новый термин _"замыкание",_ если есть логичный и старый термин из С/С++ _"область видимости"?!_
@mgersoukiasyan3626
@mgersoukiasyan3626 5 лет назад
замыкание области видимости
@oleksiidatsiuk9104
@oleksiidatsiuk9104 5 лет назад
Это было сложно, но я понял)
@antonriazhenov5860
@antonriazhenov5860 6 лет назад
почему я переписываю все точь-в-точь как на экране(проверяю все в плоть до каждого символа) и консоль мне дает ошибку
@sergannn
@sergannn 6 лет назад
не нужно переписывать, нужно понимания писать
@xxl7555
@xxl7555 7 лет назад
спсибо
@mumusus
@mumusus 6 лет назад
Про This если мы вызываем без скобок и присваиваем переменной то это отложенный вызов, а если у функции есть параметры как ее без скобок присвоить переменной?
@alexbel3021
@alexbel3021 6 лет назад
var func = myFunc.bind(null, arg1, arg2, ...);
@vvv7220
@vvv7220 5 лет назад
Физ мат ВУЗа обязателен для понимания программирования? Я тракторист, есть ли шансы понять JS ?
@moonbreathing
@moonbreathing 5 лет назад
физмат вам не нужен, дерзайте, изучайте
@sagalav
@sagalav 5 лет назад
рекомендовали это видео, чтобы разобраться в данной теме... Все хорошо, все понятно... Но без анонимной функции теряется контекст Дмитрий даже не пытался объяснить.. И так же происходит в куче других видео, книг и статей...А именно это я хотел выкурить.. Это какая загадочная вещь :)
Далее
Homemade Professional Spy Trick To Unlock A Phone 🔍
00:55
Не бойтесь  THIS  в JS
14:16
Просмотров 53 тыс.
За что ненавидят Javascript?
14:05
Просмотров 78 тыс.
Docker за 20 минут
21:42
Просмотров 60 тыс.