Первый раз посмотрел - нечего не понял, спустя неделю посмотрел ещё раз, нечего не понял, прошло некоторое время, посмотрел, и снова нечего. Сегодня решил снова посмотреть, но что то подсказывало что на этот раз пойму, и я все понял, на этот раз все было понятно. Владилен ты лучший, продолжай делать такие крутые ролики
Владилен, спасибо ! Я новичок и мне не всегда с первого раза всё понятно, но Вам удаётся сложные вещи так преподнести, что они кажутся не такими уж и страшными) Это талант!
Посмотрел прошлое видео и забыл поставить лайк, и начал смотреть это и что чувство такое как будто забыл что то важное, как вспомнил вернулся, поставил лайк и теперь смотрю дальше!!!
Поддержка иммутабельности дело конечно святое, но когда в обьекта овер 3 вложености и это все нужно постоянно копировать.. Решил добавить в проект библиотеку immer и как оказалось ее функционал построен на прокси, вот и пришло время посмотреть этот урок :) Все просто и понятно обьяснил, спасибо!
Огромное спасибо за ваш труд, все очень интересно и познавательно... но что я заметил во всех(почти) обучающих видео. Все учат писать код, каким то фишкам, паттернам, синтаксису и т.д. Но мало кто учит программировать, а именно объяснять как это все применяется в боевой задаче, ну или хотя бы видеть какой-нибудь полезный результат от своей программы. Очень сложно все это осознать если ты не понимаешь где это можно применить. Ну и добавлю от себя что самое лучшее это взять для себя какую-нибудь задачу и попытаться ее реализовать(гугля, читая доку и т.д.)
Очень большая просьба - лучше начинай подобные уроки с примеров применения. Чтобы было сразу понятно, зачем вообще это нужно, для чего это учить, что оно дает. Потому что иначе смотреть тяжеловато и скучновато. Понятно, что будут те, кто в любом случае досмотрит, но если хочешь максимально всех охватить, то лучше всё-таки начинать как и любые публичные выступления - с актуальности обсуждаемой далее темы или технологии. Энивей за урок спасибо)
Я очень думал, как сделать это с прокси и понял, что конкретно в этом случае лучше тот порядок, что я дал Тема не самая простая и начальные примеры могли бы только запутать Но я обращу внимание на это, благодарю
Если я не ошибаюсь - при создании стрелочных функций, нельзя перебить контекст родителя в котором она была создана. Тоесть this будет получен от родителя, поэтому их лучше не делать методами объектов и apply работать не будет. А видео топчик!
Я думал щас будет пример как сделать свой HashMap аналог Java, формула расчёта hash уже есть в сети, осталось только реализовать механизм поиска коллизий. Спасибо это очень полезные уроки, бывает случаи когда приходится работать со старым кодом, который нужно перенести на новый движок. Так вот с помощью этих примеров можно обернусь все что угодно в красивые, и приятные для использования методы, которые будут брать на себя всю рутину по общению со старым кодом.
Я новичок в изучении жс, тема конечно для меня очень сложная, но то как ты объясняешь в принципе понятно, просто пока не понимаю как это все применять на практике и такое бы уж точно не повторил, надеюсь все придет с опытом. Спасибо!
Самый, на мой взгляд, очевидный пример использования - это написание обертки для различного функционала. Как пример: API мессенджеров, пиш.ем свою Proxy обертку с методами, а target-ом указываем классы мессенджеров (Vk, Te, WA). Причем в этих классах, методы обертки могут быть не реализованы
Хороший частный случай. Абсолютно верно Если пойти дальше, то любые API запросы можно проксировать. Далее с помощью прокси делать интерсепторы и получать новый axios, который вроде на прокси и построен)
По поводу подачи материала вопросов нет, но в целом даже и не знаю что сказать.. нужно мыслить в парадигме Владилена и иметь за плечами не один год опыта, что бы понимать зачем это все нужно, к чему эти детальные обертки..
Все никак не могу понять одну вещь: откуда берутся дизлайки? Кто эти 15 человек? Что им могло не понравится? Наверное, эти вопросы навсегда останутся без ответа) Контент сверхмощный. Спасибо за это тебе, Владилен! Особенно радуют те детали, и мелкие фичи, на которые сам бы никогда не обратил внимания и которые не так уж легко найти в учебниках или других материалах для обучения. Дерзай дальше, Владилен!) Не останавливайся и не обращай внимания на эти 15 человек) ибо не ведают они, что творят)
не переживайте. я читал, что дизлайки также помогают продвигать видео, как и лайки. типа, контент вызывает отклик и эмоции у юзера, а уж положительный или отрицательный - это вторично для ютуба. главное, чтоб смотрели.
Владилен, или может кто-другой, почему если из объекта person удаляешь поле name, метод has при вызове поле name все равно возвращает true? По идее в объекте на который ссылается прокси этого поля нет. И обратное из массива удаляем name и возвращаем name в персон и has возвращает false. Получается в prop попадает сам созданный массив, а не прокси сформированный на основе объекта person?
Не понятен смысл передачи в качестве аргумента thisArg при проксировании функции. Прочитал, что это контекст this. Но, если добавить в хэндлер вывод в консоль, что такое thisArg, получаю undefined. При этом, когда делаю return target.apply(thisArg, args) вместо thisArg можно указать все что угодно, пустой массив/объект, любую строку, число ... и при этом все работает.
@@VladilenMininДа есть немного, я недавно смотрел твой миникурс (в одном видео) по редакс. Показалось по саге как то бегло, решил сам еще немного подтянуть. Мало нормальной инфы
Благодарю за доходчивые видео, Владилен. Хочу обратить Ваше внимание на точность формулировок ибо от Вас, как от учителя зависит ясность мыслей учеников. 8:45 "Данный метод ПОЗВОЛЯЕТ нам удалять...". 1. Метод не может нам позволять или не позволять делать что-либо, ибо не одушевлен. Это Мы, с его помощью можем что то делать. Фраза "Метод позволяет..." делает программиста рабом метода (машины), тогда как фраза "С помощью метода мы можем ..." наделяет нас руководящий функцией, а метод остается всего лишь инструментом в умелых руках. 2. Этот метод не удаляет, а вызывается в ответ на попытку удалить проп. Это утверждение более истинное, ибо мы можем перепределить метод таким образом, что он не будет ничего удалять или будет удалять что то другое. Обратите внимание, как формулировка расширяет наши возможности и закладывает возможности для нестандартного мышления. Еще раз благодарю за видео. Надеюсь на понимание.
в методе has можно было использовать Object.keys(target).includes(prop)? по последнему примеру в видео: разве через обычный геттер для класса, о которых ты рассказывал ранее, нельзя сделать то же самое?
непонятно зачем городить все же эту многоэтажность, если все это можно сделать в самой функции или объекте или в вызывающей функции. все равно же прокси не перехватывает обращение, а надо непосредственно к немук обращаться. как вариант промежуточная функция, коей образно и является прокси.
Когда я проксирую класс (MyClass), у меня в методах этого класса теряется this (становится this = Proxy). Если методы класса объявить, как стрелочные функции, то this сохраняется (this = MyClass), но перестают работать геттеры и сеттеры Proxy. Как быть?
интересно, а proxy воздействует на объект изменяя его или клонируя. Я так понимаю с помощью данного класса можно реализовать метод фабрика и реализовать блокирование множественного подключения к БД? Или же это закос на Reflection class api. Почему приходится прибегать к proxy, а не реализовать данную вещь как метод класса. А может это призрак полиморфизма? Я логику понять не могу
Очень интересно, но, мне кажется, на практике сложно придумать, где такое можно использовать. Я знаю, что прокси активно используются различными framework'ами для реализации всего их синтаксического сахара. Но в обычных приложениях это лишь создаст путаницу.
@@inoplanetyanya Для разных архитектурных штук. Например, ru.wikipedia.org/wiki/%D0%97%D0%B0%D0%BC%D0%B5%D1%81%D1%82%D0%B8%D1%82%D0%B5%D0%BB%D1%8C_(%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)
Например: Объект имеет произвольное свойство, так же есть метод возвращающий это свойство обработанным и мы хотим пользоваться только обработанным результатом. Но теперь мы можем пользоваться и напрямую обращаясь к свойству и через метод что дает разные результаты. А использую прокси мы можем быть уверены что получим только валидный результат.
Автору большой респект за умение качественно преподносить материал.
Коротко и по существу.
Первый раз посмотрел - нечего не понял, спустя неделю посмотрел ещё раз, нечего не понял, прошло некоторое время, посмотрел, и снова нечего. Сегодня решил снова посмотреть, но что то подсказывало что на этот раз пойму, и я все понял, на этот раз все было понятно.
Владилен ты лучший, продолжай делать такие крутые ролики
что то я сомневаюсь что в 4 раз ты все понял
Владилен, спасибо ! Я новичок и мне не всегда с первого раза всё понятно, но Вам удаётся сложные вещи так преподнести, что они кажутся не такими уж и страшными) Это талант!
Тема интересная, но за 2 года хоть раз пригодилось это?)
Посмотрел прошлое видео и забыл поставить лайк, и начал смотреть это и что чувство такое как будто забыл что то важное, как вспомнил вернулся, поставил лайк и теперь смотрю дальше!!!
Большое спасибо за старание и понятную подачу информации.
Крутые видео, Владилен! Без твоих стараний мне было бы гораздо сложнее изучать JS, спасибо! Жду новых видео
Спасибо Владилен,у вас очень понятная модель изложения информации.
Владилен, вы - невероятный. Огромное Вам спасибо! Лучший учитель в русскоязычном сегменте!
Полезный материал, однозначно лайк. Успехов тебе Владилен
Жесть он крууут! Смотри брат что он творит!
Поддержка иммутабельности дело конечно святое, но когда в обьекта овер 3 вложености и это все нужно постоянно копировать.. Решил добавить в проект библиотеку immer и как оказалось ее функционал построен на прокси, вот и пришло время посмотреть этот урок :)
Все просто и понятно обьяснил, спасибо!
емко и понятно. спасибо, автор!
Отменное видео! Спасибо, Владилен!
Вооу, последний пример про age_name_job просто отрыв бошки, невероятно круто!
Спасибо! Ничего не понял)
Жиза
lol'
Потому что он ничего не объяснил
@@alym.aleksey Ничего не объяснил? Как ты себе представляешь "настоящее объяснение"?
Ставлю палец вверх еще не посмотрев!
Лучший!!!
Продолжай в том же духе.!!
Отличное видео! Надо подумать куда его применять все же.
Спасибо за видео. В конце фишка особенно понравилась.
Спасибо за видео! Очень интересно слушать Вас.
Владилен, давай контент по докеру. Будет просто пушка!
Огромное спасибо за ваш труд, все очень интересно и познавательно... но что я заметил во всех(почти) обучающих видео. Все учат писать код, каким то фишкам, паттернам, синтаксису и т.д. Но мало кто учит программировать, а именно объяснять как это все применяется в боевой задаче, ну или хотя бы видеть какой-нибудь полезный результат от своей программы. Очень сложно все это осознать если ты не понимаешь где это можно применить. Ну и добавлю от себя что самое лучшее это взять для себя какую-нибудь задачу и попытаться ее реализовать(гугля, читая доку и т.д.)
Спасибо, ты лучший!
Спасибо за урок!
Спасибо, интересное видео. Уже заинтригован следующими видео с примерами Proxy.
Классно! Прокси в JS
Большое спасибо за видео!
Спасибо за труд!
Здорово продолжай
Очень большая просьба - лучше начинай подобные уроки с примеров применения. Чтобы было сразу понятно, зачем вообще это нужно, для чего это учить, что оно дает. Потому что иначе смотреть тяжеловато и скучновато. Понятно, что будут те, кто в любом случае досмотрит, но если хочешь максимально всех охватить, то лучше всё-таки начинать как и любые публичные выступления - с актуальности обсуждаемой далее темы или технологии. Энивей за урок спасибо)
Я очень думал, как сделать это с прокси и понял, что конкретно в этом случае лучше тот порядок, что я дал
Тема не самая простая и начальные примеры могли бы только запутать
Но я обращу внимание на это, благодарю
@@VladilenMinin все супер! Но я тоже за то, чтобы в уроке был маленький практический пример. Спасибо!
Я поднялся на ступеньку выше благодаря этому видео, спасибо
Красавчик и спасибо, ушёл от Фрилансера по жизни!
Я не пробовала разобраться в этом всём сама, но видно, что материал сложный и без вашего объяснения было бы тяжко. Спасибо вам за уроки
Если я не ошибаюсь - при создании стрелочных функций, нельзя перебить контекст родителя в котором она была создана. Тоесть this будет получен от родителя, поэтому их лучше не делать методами объектов и apply работать не будет.
А видео топчик!
Владилен ты супер, брат.привет тeбe c Еревана!!!
Прикоольно!
10:06
Можно вместо return true перед строчкой delete target[prop] прописать return
return delete target[prop];
и будет возвращать true
вау, классный и необычный пример в конце!! топ
Спасибо за твои уроки.
Благодарю Вас Владилен!) Вы очень толково все объясняете. Жду новых видео)
У вас уже есть идеи как применить Proxy?)
Примеры я приведу в следующем ролике
Пока не знаю, может пригодится.
Спасибо!
@DJ MIAMI Думаю тебе стоит начать с более простых вещей в таком случае
Я думал щас будет пример как сделать свой HashMap аналог Java, формула расчёта hash уже есть в сети, осталось только реализовать механизм поиска коллизий. Спасибо это очень полезные уроки, бывает случаи когда приходится работать со старым кодом, который нужно перенести на новый движок. Так вот с помощью этих примеров можно обернусь все что угодно в красивые, и приятные для использования методы, которые будут брать на себя всю рутину по общению со старым кодом.
Первым в голову пришло: использовать для отладки....
если я все правильно понимаю, то mobx работает на Proxy. раньше это было типа: "работает? ну и хорошо)". так хоть понимаю что это
Спасибо труд!
Однозначно лайкоцит!!
Лучший!
спасибо, очень нравится
Наверное ты первый кто смог рассказать о Proxy просто и понятно)) Спасибо)
Я старался, благодарю)
Мотивация для создания нового контента +
Спасибо, что ты есть)) Очень круто обьясняешь)) Я прям все до буквы понял) Хотя педалю на С#
ёмоё вот что бывает, когда не изучаешь новые фишки. Я всё это сам делал через наследование. Зачёт
мудрено!
Конечно это очень полезный ролик, и конечно - очень понравился! :-) Спасибо большое!!!
Я новичок в изучении жс, тема конечно для меня очень сложная, но то как ты объясняешь в принципе понятно, просто пока не понимаю как это все применять на практике и такое бы уж точно не повторил, надеюсь все придет с опытом. Спасибо!
Следующее видео для тебя как раз
Владилен Минин посмотрел следующее видео, тяжеловато конечно, буду пересматривать и вникать, спасибо за материал!
@@top-mma-news как успехи
Классные видосы! Спасибо!
комментарий лайк, подписка, колокольчик
У меня за окном взрывы, но мне без разницы я учу JS
Самый, на мой взгляд, очевидный пример использования - это написание обертки для различного функционала. Как пример: API мессенджеров, пиш.ем свою Proxy обертку с методами, а target-ом указываем классы мессенджеров (Vk, Te, WA). Причем в этих классах, методы обертки могут быть не реализованы
Хороший частный случай. Абсолютно верно
Если пойти дальше, то любые API запросы можно проксировать. Далее с помощью прокси делать интерсепторы и получать новый axios, который вроде на прокси и построен)
@@VladilenMinin на столько глубоко не копал, для меня пока axios - это замена $.ajax ))
@@VladilenMinin а ещё похоже на Mock объекты в PHPUNit
все понятно, Proxy типа декоратор.
Да, можно и так сказать. Но людям из чистого JS не знаком концепт декоратора)
@@VladilenMinin от вас жду урок про vue-class-components, vue-property-decorator
@@mukhammadrustambayev2051 Будет
Я сейчас курс доделываю и потому немного притормозил с ютубом. Временно
спасибо :)
По поводу подачи материала вопросов нет, но в целом даже и не знаю что сказать.. нужно мыслить в парадигме Владилена и иметь за плечами не один год опыта, что бы понимать зачем это все нужно, к чему эти детальные обертки..
Свой канал я позиционирую не как для новичков. Этот плейлист - самый простой материал, что будет на канале
@@VladilenMinin , отлично! Спасибо тебе за такой контент и подачу материала
Спасибо. Ничего не понял, НО! Очень интересно!
Часть методов прокси обязательно должны возвращать инварианты (set, deleteProperty и далее по спецификации).
Пасиб дядь... Помог
Вот последняя конструкция очень заинтересовала
А чем отличаются get и set в Proxy от свойств в Object.Create?
збс внатуре четко!
Все никак не могу понять одну вещь: откуда берутся дизлайки? Кто эти 15 человек? Что им могло не понравится? Наверное, эти вопросы навсегда останутся без ответа) Контент сверхмощный. Спасибо за это тебе, Владилен! Особенно радуют те детали, и мелкие фичи, на которые сам бы никогда не обратил внимания и которые не так уж легко найти в учебниках или других материалах для обучения. Дерзай дальше, Владилен!) Не останавливайся и не обращай внимания на эти 15 человек) ибо не ведают они, что творят)
не переживайте. я читал, что дизлайки также помогают продвигать видео, как и лайки. типа, контент вызывает отклик и эмоции у юзера, а уж положительный или отрицательный - это вторично для ютуба. главное, чтоб смотрели.
Владилен, или может кто-другой, почему если из объекта person удаляешь поле name, метод has при вызове поле name все равно возвращает true? По идее в объекте на который ссылается прокси этого поля нет. И обратное из массива удаляем name и возвращаем name в персон и has возвращает false. Получается в prop попадает сам созданный массив, а не прокси сформированный на основе объекта person?
Не понятен смысл передачи в качестве аргумента thisArg при проксировании функции.
Прочитал, что это контекст this.
Но, если добавить в хэндлер вывод в консоль, что такое thisArg, получаю undefined.
При этом, когда делаю return target.apply(thisArg, args) вместо thisArg можно указать все что угодно, пустой массив/объект, любую строку, число
... и при этом все работает.
Вот-вот, это такой непонятный момент, а он его не объясняет, вроде как будто по-умолчанию понятно должно быть...
"name_age" - it `s Magic
Прокси творят чудеса)
Сделал как на уроке, похвалился сотруднику ))) он фулсток по js, и он был приятно удивлён!
@@РузельАбдурахманов здорово! Ты его удивишь, если посмотришь следующее видео)
Спасибо
Владилен, давай контент по Redux-Saga. Будет просто пушка! )
Есть немного на канале
@@VladilenMininДа есть немного, я недавно смотрел твой миникурс (в одном видео) по редакс. Показалось по саге как то бегло, решил сам еще немного подтянуть. Мало нормальной инфы
Thanks
Благодарю за доходчивые видео, Владилен. Хочу обратить Ваше внимание на точность формулировок ибо от Вас, как от учителя зависит ясность мыслей учеников. 8:45 "Данный метод ПОЗВОЛЯЕТ нам удалять...".
1. Метод не может нам позволять или не позволять делать что-либо, ибо не одушевлен. Это Мы, с его помощью можем что то делать. Фраза "Метод позволяет..." делает программиста рабом метода (машины), тогда как фраза "С помощью метода мы можем ..." наделяет нас руководящий функцией, а метод остается всего лишь инструментом в умелых руках.
2. Этот метод не удаляет, а вызывается в ответ на попытку удалить проп. Это утверждение более истинное, ибо мы можем перепределить метод таким образом, что он не будет ничего удалять или будет удалять что то другое. Обратите внимание, как формулировка расширяет наши возможности и закладывает возможности для нестандартного мышления.
Еще раз благодарю за видео. Надеюсь на понимание.
А в чем разница вывода функции в proxy:
return target.apply(thisArg, args) и
return target(args) ?
Вроде одинаково все работает, но 2 способ короче
в методе has можно было использовать Object.keys(target).includes(prop)?
по последнему примеру в видео: разве через обычный геттер для класса, о которых ты рассказывал ранее, нельзя сделать то же самое?
Спасибо!
Приятного просмотра)
Владилен, значения присваиваются и без сеттера. Кроме ошибки он получаетя не зачем не нужен, также можно с сеттером отдним работать без геттера.
Дякую!
Спасибо за твои уроки, но я так и не понял когда это можно применить
Следующее видео с примерами
Ochen kruto.
set должен вернуть true при успешной установке значения
Спасибо за урок. Но если честно, ничуть не просто. Мне кажется, надо на примерах из реальных проектах показывать, зачем это вообще нужно?
set () {
return Object.keys(target).indexOf(prop) !== -1 // true or false
}
Извините у вас есть шпаркалка по JS?
Вопрос , а в чем разница между Proxy и аксессорами (надеюсь правильно написал ?
У Proxy побольше методов
❤🔥🔥🔥🔥
Монстер
Норм так
Если я правильно понял, то посредством Proxy, возможно осуществлять инкапсуляцию и полиморфизм в классах?
14:00 Очень умно называть функцию так же как и HOF, ни разу не запутывает
Получается тоже самое можно сделать через наследование ?
непонятно зачем городить все же эту многоэтажность, если все это можно сделать в самой функции или объекте или в вызывающей функции. все равно же прокси не перехватывает обращение, а надо непосредственно к немук обращаться. как вариант промежуточная функция, коей образно и является прокси.
Когда я проксирую класс (MyClass), у меня в методах этого класса теряется this (становится this = Proxy). Если методы класса объявить, как стрелочные функции, то this сохраняется (this = MyClass), но перестают работать геттеры и сеттеры Proxy. Как быть?
интересно, а proxy воздействует на объект изменяя его или клонируя. Я так понимаю с помощью данного класса можно реализовать метод фабрика и реализовать блокирование множественного подключения к БД? Или же это закос на Reflection class api. Почему приходится прибегать к proxy, а не реализовать данную вещь как метод класса. А может это призрак полиморфизма? Я логику понять не могу
Владилен я не понимаю уроки по JS напиши мне как подтянуть JS до прохождения курса. Спасибо
Спасибо, ты крутой)
Интересно почему не оперируешь терминами АОП, парадигмами ООП, ты же их реализовуешь) Или у фронтендщиков еще так не принято или я ошибаюсь?
Очень интересно, но, мне кажется, на практике сложно придумать, где такое можно использовать. Я знаю, что прокси активно используются различными framework'ами для реализации всего их синтаксического сахара. Но в обычных приложениях это лишь создаст путаницу.
you can easily use it for validation
Зачем что-то перехватывать, чтобы изменить логику? Почему нельзя изначально реализовать необходимую логику?
Как я понял,это актуально для фреймворков или библиотек. Для собственного кода вряд-ли понадобится.
Вот у меня такой же вопрос встал. Вы нашли на него ответ?
@@inoplanetyanya Для разных архитектурных штук.
Например, ru.wikipedia.org/wiki/%D0%97%D0%B0%D0%BC%D0%B5%D1%81%D1%82%D0%B8%D1%82%D0%B5%D0%BB%D1%8C_(%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)
Например: Объект имеет произвольное свойство, так же есть метод возвращающий это свойство обработанным и мы хотим пользоваться только обработанным результатом. Но теперь мы можем пользоваться и напрямую обращаясь к свойству и через метод что дает разные результаты. А использую прокси мы можем быть уверены что получим только валидный результат.
зачем нкжен deleteProperty усли свойства и без нее удаляются просто по команде delete op.prop?
Этот синтаксис все еще актуален?? или уже некоторые не рабочие?
Извините за тупой вопрос, а разве просто через классы то же самое сделать нельзя?
Вы нашли для себя ответ на этот вопрос? Меня он тоже мучает.
15:38 "я как угодно преобразовываю данную функцию". Скорее не функцию, а результат ее выполнения.