javascript – 对象解构分配的任何方面都是通过引用?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 对象解构分配的任何方面都是通过引用?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1198字,纯文字阅读大概需要2分钟。
内容图文
![javascript – 对象解构分配的任何方面都是通过引用?](/upload/InfoBanner/zyjiaocheng/827/5b0a864707554090afc9518e790ed6d4.jpg)
我有一个程序,它会增加会话cookie上的请求并将它们打印到控制台.最初,我试图找出如何保存这些数据.登录几个地方后,我意识到数据正在保存/更改,尽管我有一个单独的变量来保存我认为是re??q成员对象的临时版本.
这个代码让我意识到当我将赋值给它的变量递增时,实际对象正在发生变化:
recordRequest(req) {
const { ip } = req.info;
const { requestsPerSecond } = req.session;
if (req.originalUrl.split('/').filter(Boolean)[0] == 'www.example.com') {
requestsPerSecond[ip] = requestsPerSecond[ip] + 1 || 1;
}
console.log(req.session.requestsPerSecond);
}
我似乎无法在这里或Mozilla的文档中找到这是否是预期的行为,无论这是否是我使用const的结果(你可以改变成员变量),或者有某种奇怪的东西虫子在继续.我也很难在较小的范围内复制这个例子,但我确认进入或离开函数的任何东西都不会影响这一块代码.
它并没有破坏我的代码或任何东西(它实际上让我的生活更轻松)但我想知道为什么会这样!
最佳答案:
我将默认对象解构工作与正常分配基本相同.考虑:
const req = {session: {requestsPerSecond: {"0.0.0.0": "foo"}}};
const requestsPerSecond = req.session.requestsPerSecond;
// updates to `requestsPerSecond` will also update `req`.
我不确定你是否可以使用解构来打破任务,所以你必须使用正常的策略:
const requestsPerSecond = Object.assign({}, req.session.requestsPerSecond);
内容总结
以上是互联网集市为您收集整理的javascript – 对象解构分配的任何方面都是通过引用?全部内容,希望文章能够帮你解决javascript – 对象解构分配的任何方面都是通过引用?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。