Архив рубрики: Javascript

Некоторые особенности async / await

Возможность писать асинхронный код через async / await, которая появилась в Javascript начиная с версии ES2017, безусловно упрощает процесс разработки и понимания написанного другими кода. Давайте рассмотрим одну неочивидную особенность поведения такой программы. Читать далее

Шпаргалка по операторам сравнения и преобразованию типов в JS

Тема сравнения значений и тесно переплетенная с ней тема приведения типов относятся к самой фундаментальной области знаний для программистов на Javascript, без этих знаний будет легко допустить ошибки, и в каких-то моментах поведение программы может показаться нелогичным. Эта тема — такой же фундамент, как и тема функций и ООП в JS, о которых я уже писал цикл статей (кстати, надо бы сесть и обновить их, привести к текущим реалиям языка). Итак, постараюсь изложить максимально коротко, насколько это позволяют важность темы и подводные камни языка. Читать далее

Проблемы с установкой npm-пакетов под Windows

В unix-мире все проще: обычно у вас в системе уже установлен компилятор gcc, поэтому даже если какие-то пакеты требуют компиляции — обычно все проходит гладко.

Windows — другое дело. Читать далее

Функции в javascript. Оглавление

Наконец-то дописал цикл уроков (всего их 4), которые, я надеюсь, смогут помочь начинающим javascript-программистам или имеющим опыт программирования на других языках быстро освоиться в тонкостях и «красивостях» языка javascript. Старался писать максимально лаконично, больше пояснять примерами, нежели словами, будем надеяться, доступность изложения от этого не пострадала. Итак, собственно, оглавление:

Ну и в качестве бонус-трека — старая статья «Сортировка полей объектов в JavaScript (проблема в Chrome и Opera)«, можете почитать, вдруг пригодится.

Функции в javascript. Урок 4. Прототипы

Оглавление цикла уроков по функциям в javascript.

Как я уже оговорился в предыдущем уроке, вновь создаваемый объект не совсем пустой, у него есть, например, поле __proto__ (доступное явно не во всех браузерах), которое содержит ссылку на прототип этого объекта. Прототип — это тоже некий объект, который приходит на помощь, когда у нашего объекта нет полей и методов, нужных нашей программе. По сути, через прототипы в javascript реализуется механизм наследования. Как же задать прототип? Очень просто — через свойство prototype функции-конструктора:

Читать далее

Функции в javascript. Урок 3. Конструкторы

Оглавление цикла уроков по функциям в javascript.

В предыдущем уроке мы разобрали, на что же ссылается this внутри функций. В этом уроке мы продолжим данную тему, но сначала поговорим об объектах.

Как известно, javascript является объектно-ориентированным языком, однако, в отличие от многих других языков, в нем нет никаких классов вообще. Как же создать объект? Первый способ — задать объект с помощью литерала. Причем, мы можем задавать имена полей с помощью любых символов:

Читать далее

Функции в javascript. Урок 2. Ключевое слово this

Оглавление цикла уроков по функциям в javascript.

Как я уже писал в предыдущем уроке: функции в javascript — это объекты, такие же, как, скажем, массивы. Их можно присваивать переменным или полям других объектов, можно у них создавать поля и задавать любое их содержимое (someFunc.field = «value»), можно передавать в качестве параметров при вызове других функций. Да, отличие функций от других объектов — их можно вызывать, передавая какие-то параметры. Но есть также небольшое отличие от других популярных языков программирования: в javascript функции не просто вызываются, а явно или неявно применяются к неким объектам.

Формально вызов функции выглядит следующим образом:

или, что то же самое, но параметры передаются не массивом, а через запятую:

Читать далее

Функции в javascript. Урок 1. Основы

Оглавление цикла уроков по функциям в javascript.

Правильное понимание механизма работы функций в javascript — одно из самых важных качеств, необходимых опытным программистам на этом языке.

Варианты объявления функции

Обычно начинающие javascript-программисты пишут определение функции таким образом:

Но функции в Javascript — это объекты, а любые объекты можно присваивать переменной, в случае функции это может выглядеть так:

Читать далее

Сортировка полей объектов в JavaScript (проблема в Chrome и Opera)

Часто объекты в JavaScript используются в качестве заменителей ассоциативных массивов в других языках, таких, как PHP. Например, мы можем передать с сервера в браузер список автомобильных марок в виде пар ключ-значение, где ключами являются id марок в нашей базе, а значениями — названия марок. Скажем, «ассоциативный массив» (он же объект) будет выглядеть так:

Теперь выведем содержимое списка с помощью перебора по методу for-in:

И тут проявляются различи между браузерами. Firefox и IE выведут в алфавитном порядке, как мы и задали. А вот Chrome и Opera отсортируют поля объекта в порядке возрастания ключа и выведут в данном случае в обратном порядке. Как же быть?

Читать далее