опасная штука.

Чжуанцзы

На этой неделе я был впечатлен элементарными знаниями JavaScript и веб-разработки. Проблемы, с которыми я столкнулся, не были намеренно созданы для интервью, а просто некоторые реальные проблемы в моем повседневном процессе кодирования.

Примитивный тип VS. Тип ссылки

У меня буквально были проблемы с этим эталонным типом 3 раза за последнюю неделю. Первый раз это было при работе над 207. Расписание курсов". Второй раз был на работе, я хотел скопировать данные сеанса в объект и изменить его, и понял, что исходные данные сеанса также были изменены. Третий раз был сегодня, в «1146. Массив снимков.

Вот хорошая и короткая заметка об этом.

Как избежать проблемы?

Когда мы присваиваем значение одного объекта другому. Мы должны использовать JSON.parse(JSON.stringify(object)); или new Map(oldMap). Если это массив, мы можем сделать [].slice() .

// Начать обновление 2019-08-05

Мой коллега указал, что `JSON.parse(JSON.stringify(object)) не годится, потому что он теряет функции. И если это функция get..., мы можем получить значение вместо функции.

// Завершить обновление

"for...of" vs. "for...in"

Каждые несколько недель мне приходится освежать в памяти for..of и for...in. Их так трудно запомнить.

Позвольте мне попробовать, если этот раз может быть последним.

in зацикливает index/key и не должен быть итерируемым, что означает, что он работает как для массивов, так и для объектов.

of зацикливает значение итерируемого объекта, поэтому он не работает для объектов.

Область действия JavaScript в HTML

Я никогда не задумывался, как JavaScript-прокрутка работает в HTML, но это видео подняло эту забавную тему…

Быстрый тест из видео

Что можно считать дочерним в DOM?

Когда я читал DOM Enlightenment 1.12, там был очень странный комментарий:

//записывает текст без комментариев, потому что есть разрыв строки

Я открыл живой код: http://jsfiddle.net/domenlightenment/Hvfhv, но не совсем понял причину, пока не поиграл с ней в браузере…

Итак, точно так же, как сказано в комментарии: «потому что есть разрыв строки». Сам разрыв строки считается дочерним, потому что узел комментария закрыт, и перед открытием закрывающего тега ul между ними есть разрыв строки 😅

Веб-безопасность

Каждый год на работе мы проводим обучение по веб-безопасности, но я до сих пор не могу вспомнить, чему я научился. Так я нашел Краткое введение в веб-безопасность.

Принцип веб-безопасности заключается в следующем.

  • Никто никогда не застрахован на 100%.
  • Одного уровня защиты недостаточно.

Вот некоторые сокращения:

  • Совместное использование ресурсов между источниками (CORS), которое может частично предотвратить подделку межсайтовых запросов (XSRF). Что, если вредоносный код изменит заголовок и притворится исходным ресурсом? На 7-й минуте в этом видео упоминалось, что мы можем использовать токен, чтобы убедиться, что запрос действительно из того же источника.
  • Политика безопасности контента (CSP), которая может частично предотвратить одну из самых распространенных уязвимостей в Интернете: XSS (межсайтовый скриптинг). «content-security-policy» в заголовке содержит множество директив, указывающих браузеру, что загружать. Такие как «default-src», «script-src», «style-src», «connect-src».
  • HTTPS — это HTTP + SSL/TLS.
  • HTTP Strict-Transport-Security (HSTS) сообщает браузеру о перенаправлении на HTTPS.

У Udacity есть курс для объяснения XSS и XSRF, что хорошо, потому что в нем также есть несколько викторин.