У меня есть метод, форматирующий свойство date
объекта message
. Пользователь имеет массив 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)
};
если он работает, в чем вопрос? ;) – lukaleli
ваш первый блок изменяет объект, ваш второй блок _replaces_ весь объект с новым. – Alnitak
Возможно, что-то вы не видите здесь. Попробуйте 'var msg = user.messages [i]; msg.date = formatDate (msg.date); console.log (msg.date); 'Невозможно, чтобы присваивание не работало, если вы не определили свойство' data' как недопустимое, используя 'Object.defineProperty'. – plalx