如何复制JavaScript对象?

如何复制JavaScript对象?,javascript,jquery,oop,Javascript,Jquery,Oop,我使用的是一个普通的JavaScript对象。我必须创建对象的精确副本才能进行更改: var gRoll = {a:"pankaj",b: { a:"A",b:"c" }} var copy = gRoll; copy.a = "Karma"; 这是在父对象中进行更改。请给我一个解决方案来创建对象的副本,而不参考旧的副本。与OOPS中的原型设计模式相同。您正在使用副本引用同一对象 var gRoll = { a:"pankaj", b:{a:"A",b:"c"} } var

我使用的是一个普通的JavaScript对象。我必须创建对象的精确副本才能进行更改:

var gRoll = {a:"pankaj",b:
{
a:"A",b:"c"
}} 

var copy = gRoll;
copy.a = "Karma";

这是在父对象中进行更改。请给我一个解决方案来创建对象的副本,而不参考旧的副本。与OOPS中的原型设计模式相同。

您正在使用副本引用同一对象

var gRoll = {
    a:"pankaj",
    b:{a:"A",b:"c"}
}
var newObject = Object.create(gRoll);
newObject.a = 'Karma';

alert(gRoll.a); //pankaj
alert(newObject.a); //Karma

您所做的不是创建副本,而是用一个新变量引用现有对象,因此出现了问题

如果您使用的是jQuery,请使用其复制现有对象的
extend()
方法。。。具有用于深度复制的可选参数。

也许你想检查一下Cheers,如果你改变了newObject的成员,它会影响gRoll:
newObject.b.a=“changed”;控制台日志(gRoll.b.a)//=更改了
,因为Object.create不克隆,而是将gRoll设置为newObject的原型。更多关于如何工作的信息:在JavaScript中制作深度拷贝或克隆是很复杂的。