Cаммари: JS: Объекты

11 января 2021 г.
1 минута
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: Хеш-таблицы

    1. Создание ассоциативного массива приводит к инициализации индексированного массива внутри интерпретатора. const internal = []; // Во время присвоения значения data['key'] = 'value', интерпретатор выполняет несколько действий:
    1. Хеширует ключ. Результатом хеширования становится число. const hash = crc32.str('key');
    1. Число, полученное на предыдущем шаге, преобразуется в индекс массива. const index = Math.abs(hash) % 1000; // В значение внутреннего индексированного массива, по найденному индексу, записывается ещё один массив, // первым элементом которого становится ключ 'key', а вторым значение 'value'. internal[index] = ['key', 'value'];

Alexandr Firsov

5 лет назад

0