Cаммари: JS: Объекты
Статья написана студентом Хекслета. Мнение автора может не совпадать с позицией редакции
Читать в полной версии →
Chapter 4: Ссылки
- В js объекты являются ссылками поэтому {} === {}; / false
Chapter 5: Объекты в действии
- Упрощенный синтаксис создания объектов: const info = { filename, extension: ext } // const info = { extension: ext, filename: filename };
Chapter 6: Проверка существования свойства
- obj.hasOwnProperty() - проверка на существование св-ва
Chapter 7: Обход свойств объекта
- for (const prop in course ) не лучший способ т к выводит помимо всего еще и св-ва из прототипа
- Object.keys() // [key1, key2]
- Object.values() // [value1, value2]
- Object.entries() // [[key1, value1], [key2, value2]]
Chapter 8: Вложенные объекты
- для отображения объекта высокого уровня вложенности можно юзать console.log(JSON.stringify(obj))
- _.has(obj, 'one.two.three')) с помощью лодаш можно чекнуть наличие объекта в глубине
- Оператор опциональной последовательности: const obj = {};
obj?.one?.two?.three // undefined
- Оператор нулевого слияния: const obj = {};
obj?.one?.two?.three ?? 'defaultValue' // 'defaultValue'
- _.get(obj, ['one', 'two', 'three'], 'defaultValue'); // 'defaultValue' лодашовский гет позволяет удобно пользоваться опциональной последовательностью
Chapter 9: Слияние
- Object.assign(user, data); // перенести все св-ва объекта data В объект user с перезаписью
- _.pick() - выбор свойств объекта через лодаш
Chapter 10: Клонирование
- const copyOfUser = Object.assign({}, user); - клонирование через asign
- const copyOfUser = {...user};
- copyOfUser = _.clone(user);
- copyOfUser = _.cloneDeep(user); - глубокое клонирование - ресурсоемко
Chapter 13: Хеш-таблицы
- Создание ассоциативного массива приводит к инициализации индексированного массива внутри интерпретатора.
const internal = [];
// Во время присвоения значения
data['key'] = 'value'
, интерпретатор выполняет несколько действий:
- Хеширует ключ. Результатом хеширования становится число.
const hash = crc32.str('key');
- Число, полученное на предыдущем шаге, преобразуется в индекс массива.
const index = Math.abs(hash) % 1000;
// В значение внутреннего индексированного массива, по найденному индексу, записывается ещё один массив,
// первым элементом которого становится ключ
'key'
, а вторым значение 'value'
.
internal[index] = ['key', 'value'];