Объекты

    /*
     * Объект.
     * 1) Добавление
     * 2) Клонирование
     * 3) Удаление свойств
     * 4) Деструктуризация
     */
    const car = {
        color: 'red',
        brand: 'mazda',
        cost: 1200000
    };

    // 1) Добавление
    car.height = 2300;
    car.weight = 3500;

    /*
     * 2) Клонирование
     * Object.assign({}, car); - Просто скопировать один объект в другой
     * Ниже пример, мы копируем и добавляем новые свойства в новый объект
     */
    let newCar = Object.assign({}, car, {
        brand: 'BMW',
        sale: 15,
        wheels: 22,
        rudder: 'left',
        person: {
            person1: 'human',
            person2: 'dog'
        }
    });

    // 3) Удаление свойств
    delete car.color;

    /*
     * 4) Деструктуризация
     * rudder:rule - Записываем значение в новую переменную (объявлять выше ее не нужно)
     * test = 'test' - Значение по умолчанию, если в объекте такое свойство не найдено
     * person: {person1,person2} - Если нужно разобрать объект в объекте
     * ...newObject - Часть свойств записываем в переменные а оставшиеся в новый объект  (пишем всегда в конце)
     */

    let {
        brand,
        rudder:rule,
        test = 'test',
        person: {person1,person2},
        ...newObject
    } = newCar;

    console.log('↓Объект car↓\n',car);
    console.log('↓Объект newCar↓\n',newCar);
    console.log('↓Объект newObject↓\n',newObject);
    console.log('↓Деструктуризация - новая переменная↓\n\n',rule);
    console.log('↓Деструктуризация - переменная объекта в объекте↓\n\n',person1);

    /*
     * Функции в объекте
     */
    const job = {
        person: {
            name: 'Роман',
            position: 'Weber'
        },
        salary: 60000,
        nds(percent){
            let nds = (this.salary / 100 * percent) + this.salary;
            return nds;
        }
    };
    let res = job.nds(50);
    console.log(res);