无法覆盖JavaScript对象的属性
问题描述:
我得到了一种格式化的date
属性的方法。用户有一组messages
。无法覆盖JavaScript对象的属性
user.messages[i].date = formatDate(user.messages[i].date);
// logs the correctly formatted date
console.log(formatDate(user.messages[i].date));
// logs the unformatted date
console.log(user.messages[i].date);
然而,当我这样做下面的代码片段它的工作原理。
user.messages[i] = {
name: user.messages[i].name,
body: user.messages[i].body,
_id: user.messages[i]._id,
date: formatDate(user.messages[i].date)
};
答
与@plalx注释的帮助下,我发现在这个线程的解决方案:
+0
请确保将此答案标记为接受,如果它解决了您的问题:) –
+0
我可能会在2天后这样做。 (早些时候这是不可能的) – user1772306
答
这是一个猜测,但你可以添加formatteddate:“”到你的用户模型(或类似的)然后尝试:
user.messages[i].formatteddate = formatDate(user.messages[i].date);
因此,您不重新配置它。
如果它起作用,那么问题是什么? ;) – lukaleli
你的第一个块修改一个对象,你的第二个块_replaces_整个对象与一个新的。 – Alnitak
有可能是你没有在这里展示的东西。试试'var msg = user.messages [i]; msg.date = formatDate(msg.date); console.log(msg.date);'除非您使用'Object.defineProperty'将'data'属性定义为不可配置,否则赋值不可行。 – plalx