Javascript引用的数组删除对象
我肯定我做错了什么,但我不确定那是什么。我希望req.query与开始时设置的相同,但当我在结束时将它们记录到控制台时,数据和req.query仅包含rndJavascript引用的数组删除对象,javascript,arrays,Javascript,Arrays,我肯定我做错了什么,但我不确定那是什么。我希望req.query与开始时设置的相同,但当我在结束时将它们记录到控制台时,数据和req.query仅包含rnd var req = {}; req.query = { url: 'https://google.com/', width: '500', height: '190', ref: 'http://domain.tld', rnd: '9314871930982' }; var data = req.q
var req = {};
req.query = {
url: 'https://google.com/',
width: '500',
height: '190',
ref: 'http://domain.tld',
rnd: '9314871930982'
};
var data = req.query;
delete data.width;
delete data.height;
delete data.url;
delete data.ref;
console.log(req.query);
console.log(data);
当你这样做的时候
var data = req.query;
您正在使数据
引用与req.query
同样引用的对象
+-----------------+ +----------------------------+
| data |====================>| url:'https://google.com/' |
+-----------------+ | width: '500' |
| height: '190' |
+-----------------+ | ref: 'http://domain.tld' |
| req.query |====================>| rnd: '9314871930982' |
+-----------------+ +----------------------------+
因此,通过data
或req.query
对对象的任何更改也将反映在所有其他引用上。这更像是用两个不同的名称访问同一个对象
根据这种理解,如果我们查看您的代码,当您从数据中删除内容时,实际上是从req.query
引用的对象中删除
如果不希望发生这种情况,则需要使用中提到的任何方法克隆req.query
。可能的重复