Javascript -在对象赋值时不替换对象属性
Javascript - not replace object properties in assignment of objects
在javascript中分配对象时,我们如何确定分配对象中已经存在的属性没有被替换。例如:
var foo = {
property1: "a",
property3: "d"
}
var bar = {
property1 : "b",
property2 : "c"
}
然后a = b
将foo
中的property1
替换为b
。在我考虑的上下文中,我们不确定foo
的属性1在赋值发生时是否存在。因此,在分配选项时,要检查property1
是否存在,如果不存在,则从b
中分配property1
。所以简单的a=b
赋值不是一个选项。那么有没有一种方法来分配一个对象,它只会附加那些不存在于被分配对象的属性,而不替换已经存在的。
我想一种方法是:
for(var prop in b){
if(!(a[prop])){
a[prop] = b[prop];
}
}
有更好的速记方式吗?
听起来你想要jQuery之类的东西。扩展:http://api.jquery.com/jquery.extend/。
但假设你不想使用jQuery,这里有一个原生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;
};
相关文章:
- Javascript对象类在单击时打开窗口进行颜色选择,并在更改时替换对象背景颜色
- 替换另一个变量对象中的变量值
- 将URL字符串${userid}替换为javascript对象中的实际用户id
- Javascript JSON对象替换对象中的字符串
- 以编程方式将fabric-js-canvas的图像替换为hq图像,并重新计算其他对象的坐标和大小
- 获取 API 响应对象并替换(映射)所有键
- 用jQuery对象替换
- 如何使用不可变对象替换观察者模式
- 将数组中的对象替换为仅引用该对象
- 将一个对象替换为另一个对象
- 使用对象替换switch语句
- 如何将解析中的特定对象替换为用户输入的对象
- 使用 javascript Regexp 对象替换 url 中的值
- 用解析的查询字符串对象替换HTML文本
- React 0.14:纯对象替换
- 将对象替换为保存前已经存在的对象
- 用Flash对象替换图像而不闪烁
- 用新对象替换对象,或清除对象字段
- jQuery美元.扩展导致第一个对象完全被第二个对象替换
- 将命名对象替换为该对象的属性