在javascript中覆盖对象值

时间:2016-12-07 09:55:27

标签: javascript jquery

function A(){
   //how to alter persist to false here?
   B(obj.options);
}

function B(options){
   if(options.persist === true){ //do something }
}

我想改变我的嵌套对象值。我可以用一行来做,但如果我有很多选项的对象怎么办?它很丑陋我必须这样做obj.options.aobj.options.bobj.options.c等。

2 个答案:

答案 0 :(得分:4)

使用jQuery扩展函数:

var object1 = { a: false, b: 1, c: 2 };
var object2 = { a: true, b: 2 };

jQuery.extend(object1 , object2 );

答案 1 :(得分:1)

如果您不想使用jQuery,可以使用Object.assign - 如果您不使用转换器,则它是ES6和supported in most environments的一部分。签名与jQuery.extend非常相似:

Object.assign({}, object1, object2, { some: { nested: value }});

或者使用ES6,您不需要对象分配,也可以编写

const newObj = { ...oldObj, { keyToOverwrite: value }};