Почему не работает this внутри объекта?
Написал когда то функцию по работе с временем, решил добавить новый параметр с ключом f
При обращении к этому параметру выводит undefined
Подскажите как можно решить эту проблему без вызова новых now.getDate()
и тд?
function dateTime(mask = 'd.m.y h:i:s', time = false) {
let month = {
f: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
s: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
};
let now = time ? new Date(parseInt(time)) : new Date();
let data = {
d: now.getDate().toString(),
D: ('0'+ now.getDate()).slice(-2),
m: ('0'+ (now.getMonth() + 1)).slice(-2),
M: (now.getMonth() + 1).toString(),
n: month.s[now.getMonth()],
N: month.f[now.getMonth()],
Y: now.getFullYear().toString(),
h: now.getHours().toString(),
H: ('0'+ now.getHours()).slice(-2),
i: ('0'+ now.getMinutes()).slice(-2),
s: ('0'+ now.getSeconds()).slice(-2),
f: this.h === '0' ? this.d +' '+ this.n : this.h +':'+ this.i,
};
return [...mask].reduce((res, el) => {
return res += data[el] || el;
}, '');
}
console.log( dateTime('f') );
Источник: Stack Overflow на русском