Javascript - 将一个大对象分配(而不是克隆)一个新变量以减少其名称

Posted

技术标签:

【中文标题】Javascript - 将一个大对象分配(而不是克隆)一个新变量以减少其名称【英文标题】:Javascript - Assign (not clone) a large object to a new variable to reduce its name 【发布时间】:2017-12-19 16:23:57 【问题描述】:

我想将一个大对象分配给一个新变量以减少它的名称,但是我有一个错误:"realEstateProjectFundReuse" is read-only

const realEstateProjectFundReuse = this.project.realEstateProjectMotivation.realEstateProjectFundReuse
    realEstateProjectFundReuse = omit(realEstateProjectFundReuse, [this.fundReuseTypeChoose(), 'description'])

但是这个语法有效

const realEstateProjectFundReuse = this.project.realEstateProjectMotivation.realEstateProjectFundReuse
this.project.realEstateProjectMotivation.realEstateProjectFundReuse = omit(realEstateProjectFundReuse, [this.fundReuseTypeChoose(), 'description'])

【问题讨论】:

【参考方案1】:

使用关键字const 创建一个常量,它不能被分配另一个值(如第二行)。

但即使您使用let 定义变量,将其设置为新值也不会更改原始对象。因此,原因是omit 创建了一个新对象。然后realEstateProjectFundReuse 将指向新创建的对象,而this.project.realEstateProjectMotivation.realEstateProjectFundReuse 仍指向旧对象。

一个选项如下:

const projectMotivation = this.project.realEstateProjectMotivation;
projectMotivation.realEstateProjectFundReuse = omit(projectMotivation.realEstateProjectFundReuse, [this.fundReuseTypeChoose(), 'description'])

【讨论】:

以上是关于Javascript - 将一个大对象分配(而不是克隆)一个新变量以减少其名称的主要内容,如果未能解决你的问题,请参考以下文章

在MATLAB中直接将大数组写入磁盘时,是不是需要预先分配?

打字稿为“对象”分配特定类型而不是“任何”

检查是不是已分配 toString [重复]

常见的 JavaScript 内存泄露

为什么我应该使用箭头函数而不是类或对象构造函数?

C#/.NET 对象使用多少内存?