如何在现有对象中追加值而不使用javascript更改第一个对象?
我的javascript代码如下所示:如何在现有对象中追加值而不使用javascript更改第一个对象?,javascript,jquery,object,Javascript,Jquery,Object,我的javascript代码如下所示: var data= {product_id: 4, name: 'nike'} console.log(data) var dataNew = data dataNew.id = 1 console.log(dataNew) 演示如下: var data= {product_id: 4, name: 'nike'} console.log(data) var dataNew = data dataNew.id = 1 console.log(da
var data= {product_id: 4, name: 'nike'}
console.log(data)
var dataNew = data
dataNew.id = 1
console.log(dataNew)
演示如下:
var data= {product_id: 4, name: 'nike'}
console.log(data)
var dataNew = data
dataNew.id = 1
console.log(dataNew)
我像那样在对象中附加值
console.log(数据)和console.log(dataNew)的结果是存在id
我想var数据是没有id的
所以只有var dataNew具有id
如何执行此操作?在JavaScript中,除非对象是基本数据类型,否则会指定对象引用,而不是对象值 这就是为什么执行此操作时,
dataNew
和data
引用同一对象的原因:
var dataNew = data;
要防止出现这种情况,您需要创建数据的副本,如下所示:
var dataNew = Object.assign({}, data);
现在,dataNew
中的更改不会影响数据
在JavaScript中,对象引用被指定,而不是对象值,除非对象是原始数据类型
这就是为什么执行此操作时,dataNew
和data
引用同一对象的原因:
var dataNew = data;
要防止出现这种情况,您需要创建数据的副本,如下所示:
var dataNew = Object.assign({}, data);
现在,dataNew
中的更改不会影响data
delete data.id
,但这也会从dataNew
中删除属性。执行此操作之前,您需要克隆对象。@Werner,我如何克隆对象?const dataNew=object.assign({},data)
delete data.id
,但这也会从dataNew
中删除属性。执行此操作之前,您需要克隆对象。@Werner,我如何克隆对象?const dataNew=object.assign({},data)