Работа с объектами

Bliss.js — это легковесная библиотека JavaScript, ориентированная на упрощение работы с DOM, событиями и объектами. Основной особенностью является лаконичный и понятный синтаксис для манипуляций с элементами страницы, а также удобные утилиты для работы с объектами.

Создание и клонирование объектов

Bliss.js предоставляет методы для создания новых объектов и их копирования. Основной инструмент — метод Bliss.clone(), который позволяет создавать глубокие или поверхностные копии объектов.

const original = { a: 1, b: { c: 2 } };
const shallowCopy = Bliss.clone(original, false); // поверхностное копирование
const deepCopy = Bliss.clone(original, true);     // глубокое копирование

shallowCopy.b.c = 10;
console.log(original.b.c); // 10, так как поверхностная копия ссылается на вложенный объект

Глубокое копирование создаёт полностью независимый объект, что особенно полезно при работе с конфигурациями или состояниями приложений.

Объединение объектов

Для слияния объектов используется метод Bliss.extend(). Он принимает два или более объектов и объединяет их свойства в один новый объект:

const defaults = { theme: "light", debug: false };
const options = { debug: true, layout: "grid" };

const config = Bliss.extend({}, defaults, options);
console.log(config); // { theme: "light", debug: true, layout: "grid" }

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

Доступ и проверка свойств

Bliss.js упрощает работу с доступом к свойствам объектов с помощью метода Bliss.get(). Он безопасно возвращает значение вложенного свойства и предотвращает ошибки при обращении к несуществующим ключам:

const user = { profile: { name: "Anna" } };
const name = Bliss.get(user, "profile.name"); // "Anna"
const age = Bliss.get(user, "profile.age", 18); // 18, значение по умолчанию

Метод Bliss.has() позволяет проверять наличие свойства в объекте:

console.log(Bliss.has(user, "profile.name")); // true
console.log(Bliss.has(user, "profile.email")); // false

Удаление свойств

Удаление свойств осуществляется через Bliss.delete(). Он поддерживает удаление вложенных ключей и возвращает булево значение, указывающее, было ли свойство успешно удалено:

const settings = { appearance: { theme: "dark" } };
Bliss.delete(settings, "appearance.theme"); // true
console.log(settings.appearance.theme); // undefined

Метод полезен при динамическом изменении конфигураций или очистке объектов от временных данных.

Итерация по объектам

Bliss.js предоставляет удобный метод Bliss.each() для перебора свойств объекта:

const stats = { views: 100, likes: 25 };
Bliss.each(stats, (value, key) => {
    console.log(`${key}: ${value}`);
});

Особенности:

  • Итерация идёт только по собственным свойствам объекта, игнорируя прототип.
  • Функция обратного вызова получает сначала значение, затем ключ.

Фильтрация и трансформация объектов

Методы Bliss.filter() и Bliss.map() позволяют выполнять функциональные операции с объектами, аналогичные работе с массивами.

const data = { a: 1, b: 2, c: 3 };

const filtered = Bliss.filter(data, value => value > 1);
console.log(filtered); // { b: 2, c: 3 }

const mapped = Bliss.map(data, value => value * 10);
console.log(mapped); // { a: 10, b: 20, c: 30 }

Это упрощает работу с объектами при необходимости обработки данных перед рендерингом или сохранением.

Работа с ключами и значениями

Bliss.js предоставляет утилиты Bliss.keys() и Bliss.values() для получения массивов ключей или значений объекта:

const product = { name: "Book", price: 500 };

const keys = Bliss.keys(product);   // ["name", "price"]
const values = Bliss.values(product); // ["Book", 500]

Эти методы часто используются в сочетании с функциональными операциями для динамического построения интерфейсов.

Объекты как коллекции

Bliss.js рассматривает объекты как коллекции, что позволяет применять цепочку методов:

const scores = { math: 90, english: 80, physics: 85 };

const total = Bliss.values(scores)
    .filter(score => score >= 85)
    .reduce((sum, score) => sum + score, 0);

console.log(total); // 175

Такой подход сокращает количество кода и делает работу с данными более декларативной.

Глубокие структуры и вложенные объекты

Bliss.js удобно работает с вложенными объектами благодаря методам get, set, delete. Установка значения в глубокую структуру осуществляется с помощью Bliss.set():

const config = {};
Bliss.set(config, "ui.theme.color", "blue");
console.log(config); 
// { ui: { theme: { color: "blue" } } }

Метод автоматически создаёт промежуточные объекты, если их нет. Это особенно полезно при работе с динамическими настройками и JSON-структурами.

Оптимизация и производительность

Bliss.js разработан с акцентом на легковесность и скорость. Методы работы с объектами оптимизированы для минимального использования памяти и избегания лишних копирований данных. Это делает библиотеку удобной для проектов, где важно быстрое выполнение операций с конфигурациями и состоянием.

Заключение по функциональности объектов

Основные возможности Bliss.js при работе с объектами включают:

  • создание и клонирование объектов (clone),
  • объединение (extend),
  • безопасный доступ (get), установка (set) и удаление (delete) свойств,
  • проверка наличия (has),
  • функциональные операции (each, filter, map),
  • извлечение ключей и значений (keys, values).

Библиотека превращает объекты JavaScript в гибкие, управляемые коллекции, упрощая манипуляции с данными, особенно в динамических веб-приложениях.