Показать сообщение отдельно
  #3 (permalink)  
Старый 14.07.2022, 17:49
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

NovichokJS,

const getNewDate = initValue => {
            const newValue = {
                add(property, value) {
                    let set = `${property == 'year' ? 'setFull' : 'set'}`;
                    let get = `${property == 'year' ? 'getFull' : 'get'}`;
                    property = `${property.slice(0,1).toUpperCase()}${property.slice(1)}`;
                    set += property;
                    get += property;
                    value += initValue[get]();
                    initValue[set](value);
                    return this;
                },

                subtract(property, value) {
                    this.add(property, -value)
                    return this;
                },

                result() {
                    return initValue;
                },
            };
            return newValue;
        };

        const res = getNewDate(new Date(2020, 0, 7, 17, 17, 17))
            .add('minutes', 2)
            .add('date', 8)
            .subtract('year', 1)
            .result();
        // Output: ...Jan 15 2019 17:19:17.....

        console.log(res);
Ответить с цитированием