JavaScript Kitchen 👨🏻‍🍳 – Telegram
JavaScript Kitchen 👨🏻‍🍳
299 subscribers
63 photos
215 links
Обʼєднання JavaScript ентузіастів та митців
https://javanoscript-kitchen.js.org/

Співпраця:
javanoscript_kitchen@pm.me
Download Telegram
Кому интересен GraphQL подключайтесь к стриму с конфы GraphQL Finland 🇫🇮

https://www.youtube.com/watch?v=aX-BxhkFd9g

Расписание тут - https://graphql-finland.fi/schedule/

#javanoscript #conference
Forwarded from Кулачок за фронтенд
Наткнулся недавно на простой и полезный хинт: дестрактинг можно удобно использовать при логировании: вместо того, чтобы писать

console.log('obj1: ', obj1, 'obj2: ', obj2)

можно сделать так:

console.log({obj1, obj2})

что сделает в общем, тоже самое. Также удобно логировать объект в console.table: console.table({obj}) — выведет таблицу в столбцах которой будут названия ключей, а в ячейках — значения.

Раз уж залез в эту историю, давно хотел накидать краткую справку по консольному command line API (не всё, конечно, фрагментарно. С сортировкой в порядке субъективно значимой важности):

⟌ Постоянно пользуюсь:

◦ copy(object) скопирует аргумент в буфер обмена. Чрезвычайно полезная фича, особенно в связке с «Store as global value» из контекстного меню.
◦ keys(), values() — алиасы для Object.keys и Object.values
◦ в $0-4 хранятся ссылки на последние инспектированные DOM-элементы из Elements. На практике я пользуюсь только $0.

⟌ Порой использую:

◦ $(selector) и $$(selector) работают как алиасы для querySelector и querySelectorAll
◦ $_ в коносоли вернёт результат последнего вычисления


⟌ Редко использую:

◦ clear() (или хоткей Cmd+k, которым, в отличие от метода, пользуюсь постоянно) очистит консоль
◦ dir() — алиас для console.dir() — выведет в консоль представление аргумента в виде JS-объекта. Удобно для инспектирования DOM-элементов (для которых console.log отрисует просто ссылку на DOM-ноду, а dir — объект с атрибутами)

⟌ Остальное (на практике не использую):

◦ debug(function) — остановит выполнение сразу после попадания выполнения внутрь function. Отписаться можно с помощью undebug(). На практике не применяется.
◦ inspect(object/function) — откроет соответствующую вкладку — DOM-inspect для ноды или профилировщик — для функции
◦ getEventListeners(object) вернёт все подписавшиеся на этот объект через addEventListeners коллбэки
◦ monitor(function) выведет в консоль «function ${functionName} called with arguments: ${arguments}» при каждом вызове функции. Отписаться можно с помощью unmonitor()
◦ mo
nitorEvents(object[, events]) — аналогичный инструмент для инспектирования событий объекта
profile(id), profileEnd(id) — запустит и остановит профилировщик соответственно
table() — алиас для console.table, табличное представление выводимых данных
queryObjects(ConstructorName) — новое API — вернёт список всех инстансов ConstructorName. Например queryObjects(Promise) покажет все существующие на странице промисы. Работает также и с пользовательскими конструкторами и классами.
Разбор уязвимости npm-библиотеки event-stream, у которой, между прочим, около 2х миллионов скачиваний еженедельно:

https://schneid.io/blog/event-stream-vulnerability-explained/

#javanoscript #security
Немного аналитики за уходящий 2018 год!
С наступающим Новым Годом! 🎅🏻🎄
Forwarded from Вебня
Январская встреча #TC39 пройдет в офисе GoDaddy с 29 по 31 января 2019. Это последний шанс для stage 3 предложений попасть в спецификацию ES2019. На данный момент в повестке указаны 3 пропозала, которые будут пытаться попасть на stage 4:
- Object.fromEntries
- Well-formed JSON.stringify
- String.prototype.{trimStart,trimEnd}
А вот и свежий эксплойт V8 в Math.expm1 – баг типизации статического анализатора.

https://abiondo.me/2019/01/02/exploiting-math-expm1-v8/

#javanoscript #v8 #security
Вячеслав Егоров опубликовал первую часть "Введения в виртуальную машину Dart" – Как Dart VM исполняет ваш код:

https://mrale.ph/dartvm/

#javanoscript #dart
TC39 определился с финальным набором фичей, которые мы увидим в ES2019:
- изменение синтаксиса catch в случае не используемого блока
- улучшится сериализация юникод символов методом JSON.stringify
- появится Symbol.prototype.denoscription для получения строкового представления дескриптора Символа
- пересмотрен принцип работы Function.prototype.toString
- добавлен метод Object.fromEntries для создания объектов из массивов пар ключ-значение
- появятся методы String.prototype.{trimStart,trimEnd} с алиасами {trimLeft,trimRight}
- добавлены методы Array.prototype.{flat,flatMap}

#javanoscript #es2019