Oleg
А сейчас уже ES6 давно
Anatoly
ну прям давно
Дима
Дима
Паттерн матчинг это офигенно мощная штука
Дима
Потому что синтаксиса нет вот и не пригождается
Естественно, мой пример выше не считается за наличие синтаксиса)
Юрий
function test () { return this.name } console.log(test()) //'' ЧЯДНТ?
В контексте этой функции this имеет глобальный скоуп. Если вызвать функцию с явно заданным скоупом, тогда она вернят имя правильно: test.call(test)
Anonymous
Ммм. Как получить имя функции внутри функции, соответственно не зная ее имени?
Anonymous
Ну вот так вот)
Anonymous
типо function test () { return /*some magic*/ } test() // 'test'
Kirill
типо function test () { return /*some magic*/ } test() // 'test'
можно написать try catch, выбрость в try ошибку, а в кетче из трейса вынуть имя функции
Kirill
но так можно в больничку загреметь
Nikolay
да, заберут
Anonymous
=D
Andrey 😼
типо function test () { return /*some magic*/ } test() // 'test'
А теперь подумай, как оно будет в минифицированном бандле работать
Andrey 😼
Спойлер: никак
Andrey 😼
Не, ну, будет
Andrey 😼
Но в name будет какое-нибудь гордое «a»
Дима
но так можно в больничку загреметь
Вот только хотел написать 😂
Дима
Но в name будет какое-нибудь гордое «a»
А потом первый ангуляр такой: «уупс» 😁 Сначала сделали фичу, а потом только этот факт обнаружили))
Andrey 😼
А вот прокси мб и не будут подвержены этому
Serhii
код слишком красивый чтобы его обфусцировать
Andrey 😼
Но не уверен
Anonymous
Ну и нормально. У меня какой кейс. Функция имеет информативное название, но так же она должна возвращаться объект с полем type (например) со строкой, содержащей такое же информативное название. Как это выглядит в проде, не важно. Сейчас это работает так, что строка прописывается отдельно. Я хочу, что бы она прописывалась автоматом
Andrey 😼
Он настолько хорошо написан, что обфускация не требуется 😹
Andrey 😼
И так нихера никто не поймет без поллитры
Andrey 😼
И будут у тебя информативные «a» и «b»
Andrey 😼
И такое же будет попадать в type
Anonymous
Ну и нормально
Andrey 😼
Потому что только libastral ведает, как называлась функция до минификации
Anonymous
Говорю же, для продакшена не важно. Информативные названия нужны для дебагинга во время разработки
Andrey 😼
Так у тебя в разных файлах будут они одинаково называться, не?
Anonymous
Что?
Anonymous
Ты редакс не юзал, да?
Andrey 😼
Юзал и лучше бы не юзал
Serhii
Минифицировать*
впервые слышу это слово
Serhii
еще x?.property назови элвис оператором
Serhii
кек
Andrey 😼
Обфускация не только имена обрезает
Andrey 😼
Но и всячески косоёбит код, чтобы хуйразберешь
Andrey 😼
В современном фронтенде с этим успешно Babel справляется, но не суть
Kirill
кстати Object.defineProperty(func, "name", { value: "func" }); не спасет ли от обфускации
Andrey 😼
Ну и нормально
А чем плохо использовать proxy?
Anonymous
Нужно дважды писать
Anonymous
А я хочу вообще 1 раз)
Anonymous
Есть идея завернуть прокси в коструктор и в конструкторе сотворить какую-то магию по выборке имени, но пока не понял как
Anonymous
Депрекейтед
Andrey 😼
arguments.callee.name?
В стрикте не работает
ixplo
Нужно дважды писать
export const {getUser} = acr не сработает, кстати? )
Sergey
ясн
Anonymous
getUser нет в acr
Anonymous
А....
Anonymous
хм
Andrey 😼
Все будут)
Разве будет переименовывать свойство, если оно явно не определено в исходном объекте?
ixplo
дай линк плз
Anonymous
Сек...
Anonymous
http://jsbin.com/ciguvudeno/1/edit?js,console
Anonymous
ой, а у меня там ошибка
Anonymous
По ходу работает!
Anonymous
Чародейство!
ixplo
:) убрал лишний .getUser?
Anonymous
ага
Anonymous
Круто, спасибо!
Anonymous
От прокси мозг немного едет. Кто мог такое придумать вообще... Но круто, и, наверное, полезно
Дима
Тебе не нужно их использовать
Дима
По крайней мере пока 100%
Дима
Но у меня уже есть кейс, когда они прям идеально подойдут 😄 Но это код для отладки, к конечному юзеру прокси выпускать пока рановато — нет ине будет полифиллов и это КРАЙНЕ медленно, прям пипец как
Дима
Я серьезно. Не используй прокси сейчас, вообще
Anonymous
=(
Anonymous
Ок
Juan
кто юзал onesignal?