保持原始对象不变

时间:2019-07-16 10:47:11

标签: javascript object

我已经为一个对象分配了一些数据,我希望在将来的对象就像第一次一样。每当我对父对象进行更改时,它也会同样反映在子对象中。我该如何解决?请同时给出对象,数组和映射的所有可能答案。

var parentObject = someData;
const childObj = Object.assign({}, parentObject);

我只想更改父对象,并且希望将子对象保持不变以便将来使用。

1 个答案:

答案 0 :(得分:0)

您可以编写一种方法检查天气是否冻结。这是我合并父对象和子对象然后冻结子对象的示例。 同样,如果调用mergeObject()合并父级和子级,则不会合并任何内容。由于我们在第一次合并后冻结了子对象。

/**
 * Merge two object using Object.assign()
 * @param parentObj
 * @param childObj
 * @returns {ReadonlyArray<any>} returns frozen object
 */
function mergeObject(parentObj, childObj) {
   return Object.isFrozen(childObj) ? childObj : Object.freeze(Object.assign({}, parentObj))
}

// Before freezing
var parentObject = {a: 4};
var childObj = mergeObject(parentObject, {});
console.log(childObj); // {a: 4}

// After freezing
parentObject.b = 6;
childObj = mergeObject(parentObject, childObj);
console.log(childObj); // {a: 4}, didn't merge {b: 6}