Size: a a a

JavaScript.Ninja

2020 August 03

DP

Dmytro Petunenko in JavaScript.Ninja
Ну если коротко то так
delete obj.a; // удалил свойство obj а
console.log(obj.a);   // своего свойства нет, достаю из прототипа 10
delete obj.a; // попытался удалить свойство а, но его нет, значит ок
console.log(obj.a);   // своего свойства нет, значит достану из прототипа 10
delete obj.b; // удалил свойство b
console.log(obj.b.c); // пробую достать свойство b, его нет, иду в прототип получаю ссылку на объект, из него пробую достать c
delete obj.b.c; // пробую достать свойство b, его нет, иду в прототип, получаю ссылку на объект и из него удаляю свойство с
console.log(obj.b.c); // пробую достать свойство b, его нет, лезу в прототип, получаю ссылку на объект, там достаю значение свойства с, ну а там undefined
Если хочешь понять JS, думай как JS ))
источник

PA

Pavlo Anichin in JavaScript.Ninja
👍👍👍😅 это точно)
источник

s🐱

special agent 🐱 in JavaScript.Ninja
Dmytro Petunenko
Ну если коротко то так
delete obj.a; // удалил свойство obj а
console.log(obj.a);   // своего свойства нет, достаю из прототипа 10
delete obj.a; // попытался удалить свойство а, но его нет, значит ок
console.log(obj.a);   // своего свойства нет, значит достану из прототипа 10
delete obj.b; // удалил свойство b
console.log(obj.b.c); // пробую достать свойство b, его нет, иду в прототип получаю ссылку на объект, из него пробую достать c
delete obj.b.c; // пробую достать свойство b, его нет, иду в прототип, получаю ссылку на объект и из него удаляю свойство с
console.log(obj.b.c); // пробую достать свойство b, его нет, лезу в прототип, получаю ссылку на объект, там достаю значение свойства с, ну а там undefined
Если хочешь понять JS, думай как JS ))
Довольно изи)
источник

s🐱

special agent 🐱 in JavaScript.Ninja
Если понимать, что цепочка наследования строится во время исполнения, а не описания, то все стоит на своих местах
источник

DP

Dmytro Petunenko in JavaScript.Ninja
Ну да, я попытался простыми словами рассказать как там в рантайме все происходит )
Опять таки, так как это понимаю я
источник

PA

Pavlo Anichin in JavaScript.Ninja
Ещё такой маленький вопросик, а то немного не понимаю.

function foo(){
 return baz;
 var baz = 5;
 function baz(){}
}
console.log(foo())

Тут отработает hoisting получается должна поднятся переменная baz, ей присвоится unefined. Так-же поднимается объявление функции, но почему baz возвращаемый из foo не undefined, а именно ссылка на ф-цию. Это в порядке очереди происходит из-за всплытия, или я что-то упустил?
источник

Е

Евгений in JavaScript.Ninja
Pavlo Anichin
Ещё такой маленький вопросик, а то немного не понимаю.

function foo(){
 return baz;
 var baz = 5;
 function baz(){}
}
console.log(foo())

Тут отработает hoisting получается должна поднятся переменная baz, ей присвоится unefined. Так-же поднимается объявление функции, но почему baz возвращаемый из foo не undefined, а именно ссылка на ф-цию. Это в порядке очереди происходит из-за всплытия, или я что-то упустил?
Считай так baz = function() {}
Вместо function baz() {}
источник

Е

Евгений in JavaScript.Ninja
Pavlo Anichin
Ещё такой маленький вопросик, а то немного не понимаю.

function foo(){
 return baz;
 var baz = 5;
 function baz(){}
}
console.log(foo())

Тут отработает hoisting получается должна поднятся переменная baz, ей присвоится unefined. Так-же поднимается объявление функции, но почему baz возвращаемый из foo не undefined, а именно ссылка на ф-цию. Это в порядке очереди происходит из-за всплытия, или я что-то упустил?
Если дотошно, то во время определения сущностей сначала наткнется на var baz и выделит ей область памяти, потом увидит новую сущность - функцию, но имя функции уже определено, и он в это область памяти (т.к. имена совпали) запишет что baz это функция, и в рантайме обратившись к baz получит ответ что это ссыль на функцию, ее и вернет
источник

DP

Dmytro Petunenko in JavaScript.Ninja
Вообще, можно говорить что JS ленив
Найдя первое что есть он это и использует
Все эти примеры похожи на "упражнения в прекрасном"
Т/е интересно, но в целом безполезно
Если хочется понимать почему так работает я бы рекомендовал поискать описание того как работает джс, что там есть условно два прохода, что есть построение синтаксического дерева и вот это вот все
В реальности таких примеров вы в современной разработке вряд ли встретите, а если встретите то лучше бегите ) И если будете сами писать, то скорее всего с вами не будут дружить
источник

PA

Pavlo Anichin in JavaScript.Ninja
Понял, спасибо большое 👍😃
источник

DP

Dmytro Petunenko in JavaScript.Ninja
Pavlo Anichin
Ещё такой маленький вопросик, а то немного не понимаю.

function foo(){
 return baz;
 var baz = 5;
 function baz(){}
}
console.log(foo())

Тут отработает hoisting получается должна поднятся переменная baz, ей присвоится unefined. Так-же поднимается объявление функции, но почему baz возвращаемый из foo не undefined, а именно ссылка на ф-цию. Это в порядке очереди происходит из-за всплытия, или я что-то упустил?
ну а тут примерно так (опять таки как я это вижу)
Работает хойстинг
в скоупе фунции идет анализ содержимого
Есть переменная baz (при том самом "первом проходе" она просто создается)
есть функция baz, переменная затирается
Начинается выполнение ("второй проход"), функция запускается
возвращаем baz и там функция
Присвоение значения не происходит, этот участок кода никогда не будет выполнен
Запусти к примеру этот же код, но без функции
Хойстинг сработал, но значение не присваивается потому что после return
function foo(){
 return baz;
 var baz = 5;
}
console.log(foo())
источник

PA

Pavlo Anichin in JavaScript.Ninja
Всё, ребят, спасибо всем за ответы, на сегодня больше вас не побеспокою))
источник

DP

Dmytro Petunenko in JavaScript.Ninja
А у меня такой вопрос
Есть возможность поменять пайплайн
Сейчас выглядит примерно так
1 обновляем или устанавливаем структуру на aws (cloud formation)
2. В паралели билдим пролеженьку (node + react), тут же юнит тесты и линты и пушим докер образы в ecr(регистр образов на aws)
3. Запускаем деплой, для применения новых образов на энве в соответсвие с бранчой (sandbox или prod)
Схемка в общем рабочая. но
- нужно добавить е2е между 2 и 3 (cypress)
- не хочется билдить каждый раз на каждый коммит и прод и сбокс (я вообще думаю что на каждый коммит не нужно билдить, только ПР)
Но знаний "как правильно" (если такое бывает) нет совсем
поэтому пока строю по интуиции
Но хочется красивового ) Может даже блю/грин деплой
Какие нынче бест практис, кто знает?
источник

I

Ilya in JavaScript.Ninja
Ребят такой вопрос, использую React компонент с большим объектом состояния,  есть такая проблема что этого компонента на странице может быть больше чем 1, из этого выходит что один и тот же стор нужно хранить для каждого компонента отдельно + этот стор синхронизируется с localstorage. Сейчас все написано на redux+tookit
обернул создание стора в функции где добавляется скоуп, по которому я разделяю для глобальный каждого объекта, ну это существенно усложняет работу со стором, приходится во все внутренние компоненты прокидывать имя скоупа которое нужно использовать к любому обращению к стору и отправки экшинов
Хотелось бы услышать как обычно справляются с подобными проблемами?
источник

IK

Illya Klymov in JavaScript.Ninja
берут нормальный компонентный стор )
источник

IK

Illya Klymov in JavaScript.Ninja
а-ля эффектор
источник

I

Ilya in JavaScript.Ninja
я смотрю в его сторону ну пока не очень понял как он решает подобные проблемы
источник

I

Ilya in JavaScript.Ninja
Illya Klymov
а-ля эффектор
https://github.com/strelov1/react-effector-common-store/blob/master/src/App.js
С эффектором коду меньше ну проблемы те же, что-то я похоже непонимаю
источник

VK

Vladimir Klimov in JavaScript.Ninja
Возник вопрос: у кого есть опыт использования "парного программирования" в работе? Что думаете об этом подходе для обучения/облегчения процесса онбординга, как именно организовывали работу в паре и вообще эффективно ли это?
источник

MK

Maks Kravchenko in JavaScript.Ninja
Vladimir Klimov
Возник вопрос: у кого есть опыт использования "парного программирования" в работе? Что думаете об этом подходе для обучения/облегчения процесса онбординга, как именно организовывали работу в паре и вообще эффективно ли это?
Имхо парное программирование хорошо в контексте «уточки» и планирования

Насчёт уточки
Когда рассказываешь другому о проблеме вспоминаешь максимум информации о проблеме и порой сам находишь баг

Плюс у всех опыт разный и другой человек мог сталкиваться с подобной проблемой или заданием
источник