JavaScript Daily | Frontend
320 subscribers
354 photos
151 links
Всё самое интересное из мира веб-разработки за сегодня.

Для связи - art.diontev@ya.ru
Download Telegram
​​#js_note

Object.getOwnPropertyDescriptor()

Метод Object.getOwnPropertyDescriptor() возвращает дескриптор свойства для собственного свойства (то есть такого, которое находится непосредственно в объекте, а не получено через цепочку прототипов) переданного объекта.

Этот метод позволяет просмотреть точное описание свойства. Свойство в JavaScript состоит из строкового имени и дескриптора свойства.

Дескриптор свойства — это запись с некоторыми из следующих атрибутов:

value - Значение, ассоциированное со свойством.

writable - Значение true, если значение, ассоциированное со свойством, может быть изменено, иначе false.

get - Функция, возвращающая значение свойства, либо undefined, если такая функция отсутствует.

set - Функция, изменяющая значение свойства, либо undefined, если такая функция отсутствует.

configurable - Значение true, если тип дескриптора этого свойства может быть изменён и если свойство может быть удалено из содержащего его объекта, иначе false.

enumerable - Значение true, если это свойство доступно при перечислении свойств содержащего его объекта, иначе false.
#js_note

Разница между императивным и декларативным стилем программирования

Императивный стиль

Чтобы лучше понять разницу между императивным и декларативным стилей, давайте напишем небольшую функцию для нахождения всех нечётных элементов в массиве. Сперва сделаем это императивно:

function onlyOdd(array) {
let result = []

for (const element of array) {
if (element % 2 !== 0) {
result.push(element)
}
}

return result
}

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

Декларативный стиль

Теперь попробуем ту же функцию написать декларативно, то есть не вдаваясь в детали:

function onlyOdd(array) {
return array.filter((element) => element % 2 !== 0)
}

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

Разница между этими подходами — в деталях реализации. В первом случае детали описываем мы сами, во втором они от нас скрыты.
​​#js_note

Оператор нулевого слияния

Оператор нулевого слияния (??) это логический оператор, который возвращает значение правого операнда когда значение левого операнда равно null или undefined, в противном случае будет возвращено значение левого операнда.

В отличие от логического ИЛИ (||), левая часть оператора вычисляется и возвращается даже если его результат после приведения к логическому типу оказывается ложным, но не является null или undefined. Другими словами, если вы используете || чтобы установить значение по умолчанию, вы можете столкнуться с неожиданным поведением если считаете некоторые ложные значения пригодными для использования (например, "" или 0). Ниже приведены примеры.

Использование оператора нулевого слияния

В этом примере показано как устанавливать значения по умолчанию, оставив в покое значения отличные от null или undefined.
​​#js_note

Object.prototype.valueOf()

Метод valueOf() возвращает примитивное значение указанного объекта.

JavaScript вызывает метод valueOf для преобразования объекта в примитивное значение. Вам редко потребуется вызывать метод valueOf самостоятельно; JavaScript автоматически вызывает его при обнаружении объекта, когда ожидается примитивное значение.

По умолчанию, метод valueOf наследуется каждым объектом, произошедшим от Object. Каждый встроенный объект ядра переопределяет этот метод, возвращая подходящее значение. Если объект не имеет примитивного значения, valueOf возвращает сам объект, который отображается как: [object Object].