gpt4 book ai didi

javascript - 替换对象值而不替换引用

转载 作者:数据小太阳 更新时间:2023-10-29 05:10:08 24 4
gpt4 key购买 nike

如何更新整个对象,例如:

var x = {a:1}
function modify(obj) {
obj = {b:2}
}
modify(x)
console.log(x) // {a:1}

但是保持引用?我希望在函数外修改对象。

我的具体情况是在我的函数中使用 lodash.pick:

if (whitelist) {
obj = _.pick(obj, whitelist)
}

我似乎找不到修改对象的pick 函数。有没有办法做到这一点,或者我是否需要开始返回对象的副本?

最佳答案

删除旧对象的所有内容,然后逐个键添加新属性:

function modify(obj, newObj) {

Object.keys(obj).forEach(function(key) {
delete obj[key];
});

Object.keys(newObj).forEach(function(key) {
obj[key] = newObj[key];
});

}

var x = {a:1}
modify(x, {b:42})
document.write(JSON.stringify(x));

如果您想知道这在总体上是否是个好主意,答案是否定的。构造一个新对象,从函数返回它并赋值 - 这是一种更受欢迎的方式。

关于javascript - 替换对象值而不替换引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26957719/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com