gpt4 book ai didi

Javascript - 不替换对象分配中的对象属性

转载 作者:行者123 更新时间:2023-12-03 12:05:13 25 4
gpt4 key购买 nike

在 JavaScript 中分配对象时,我们如何确定分配对象中已存在的属性不会被替换。例如说:

var foo = {
property1: "a",
property3: "d"
}

var bar = {
property1 : "b",
property2 : "c"
}

然后

a = b

会将 foo 中的 property1 替换为 b。在我正在考虑的上下文中,我们不确定分配发生时 foo 的 property1 是否存在。所以分配选项时要检查property1是否存在,如果不存在则从b分配property1。所以简单的 a=b 赋值不是一个选择。那么有没有一种方法可以分配一个对象,它只会附加分配给的对象中不存在的属性,而不替换已经存在的属性。

我想一种方法是:

for(var prop in b){
if(!(a[prop])){
a[prop] = b[prop];
}
}

有更好的速记方式吗?

最佳答案

听起来你想要类似 jQuery.extend: http://api.jquery.com/jquery.extend/ 的东西.

但假设您不想使用 jQuery,这里有一个 native JS 实现示例,它也支持嵌套(深层)对象 ( http://jsfiddle.net/DqgYQ/ ):

function extend(target, src, deep){
if(typeof target !== 'object' || typeof target === 'undefined' || target === null) return target;

for(var prop in src){
var value = target[prop];
var copy = src[prop];

if(deep && typeof copy === 'object'){
value = typeof value === 'undefined' ? {} : value;

target[prop] = extend(value, copy, deep);
}
else{
target[prop] = copy;
}
}

return target;
};

请参阅 fiddle 以获取工作示例。

关于Javascript - 不替换对象分配中的对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25216493/

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