我有一个对象,让我们说" globalObject",在代码的很多地方引用,我不应该改变这个对象。 我需要做的是向该对象添加属性并将修改后的对象传递给函数。但我不应该真正更改对象,因此代码中的引用仍将引用未修改的原始对象。
我应该像这样克隆对象吗? :
var globalObject = {param1: "something", param2: 42};
// Need to add "param3" to object which will be passed into "foo" function.
// Is cloning object is the only way?
var paramObject = jQuery.extend(true, {}, globalObject);
paramObject.param3 = "new param";
foo(paramObject);
有更好的方法吗? 谢谢!
答案 0 :(得分:1)
您可能希望使用快速可靠的JSON serilization / deserialization克隆对象。然后,您可以向克隆的对象添加额外的属性。
为此,您不需要jQuery:
var paramObject = JSON.parse(JSON.stringify(globalObject)); //cloning
paramObject.param3 = "new param";
答案 1 :(得分:0)
你可以更快地做到这一点:
foo(jQuery.extend(true, {
param3: "new param"
}, globalObject);
但是,就我而言,克隆对象需要参与其中。