Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在现有对象中追加值而不使用javascript更改第一个对象?_Javascript_Jquery_Object - Fatal编程技术网

如何在现有对象中追加值而不使用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

我的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(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)