微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

覆盖现有对象属性

如何解决覆盖现有对象属性

我在处理两小块代码时遇到问题,无法理解为什么其中一个有效而一个无效。

我有一系列“任务”。 当用户更新任务时,我需要更新 AuditLog,以显示更新。 我有两个代码块,第一个有效,第二个无效。

第一块 - 当我查看更新的任务时,它会显示更新的日志。

第二块 - 当我查看更新的任务时,日志没有更新。

我怀疑这与我引用和分配事物的方式有关。

这个块正确更新了“任务”,查看它会显示更新的“审计日志”。

//update task with server response 'a'
this.updateTask(task).subscribe(a => {
  let updatedTask = initializeTask(a);
  task.auditLog = updatedTask.auditLog;
});

然后我想我可以稍微简化一下代码... 但是当使用这个块时,当我查看任务时,它不显示更新的日志。 (我应该提到打印 'intializeTask(a)' 工作正常并打印更新的日志值,因此与此无关。

//update task with server response 'a'
this.updateTask(task).subscribe(a => {
  task = initializeTask(a);
});

我觉得我可能在 JavaScript 引用/分配变量等方面遗漏了一些基本的东西。也许有人可以解释一下。

提前致谢!

PS:initializeTask 只是确保没有任何未定义的内容并且日期格式正确:

export function initializeTask(t): Task {
    t.subject = t.subject || '';
    t.startTime = initDate(t.startTime);
    t.state = t.state || 'Published';
    t.createdBy = t.createdBy || '';
    if (t.auditLog) {
        t.auditLog.forEach(d => {
            d.createdOn = initDate(d.createdOn);
        });
    }
    return t;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。