正如标题所述,我想将日期以字符串形式(DD / MM / YYYY)动态分配给属性。它必须动态地计算并在对象属性声明旁边分配。
我想到了这样的东西:
var obj = {
today: `${(new Date).getDate()}/${(new Date).getMonth()}/${(new Date).getFullYear()}`
};
这可以完美地工作,但显然效率不高,因为它创建了三个新的Date实例。 我想这样做:
var obj = {
today: (
const today = new Date;
return `${today.getDate()}/${today.getMonth()}/${today.getFullYear()}`
)
};
谢谢!
答案 0 :(得分:3)
您要查找的是 IIFE (立即调用函数表达式):基本上,您想包装整个生成器函数并在定义对象时立即调用它:
var obj = {
today: (() => {
const today = new Date;
return `${today.getDate()}/${today.getMonth()}/${today.getFullYear()}`
})()
};
console.log(obj);
附带说明:
+1
上进行today.getMonth()
,因为方法returns a zero-based index of the month .padStart()
来强制两位数的月份和日期。在此处查看更新的示例:
function pad(val) {
return val.toString().padStart(2, '0');
}
var obj = {
today: (() => {
const today = new Date;
return `${pad(today.getDate())}/${pad(today.getMonth() + 1)}/${today.getFullYear()}`
})()
};
console.log(obj);
答案 1 :(得分:0)
var today = new Date();
var obj = {
today:(
return `${today.getDate()}/{today.getMonth()}/${today.getFullYear()}`
)
}
应该工作
答案 2 :(得分:0)
我正在使用函数来执行此操作,以使变量“ today”(如果已存在)不会被覆盖,只是一个预防措施
obj = {
today: ( function() {
today = new Date();
return "" + today.getDate() + "/" + today.getMonth() + "/" + today.getFullYear();
})()
};