Javascript 使用对象文字创建新对象

Javascript 使用对象文字创建新对象,javascript,class,object,object-literal,Javascript,Class,Object,Object Literal,我有以下对象文字: var a = {a:1,b:2} 现在我想要同一对象的另一个实例。如果我使用的是构造函数,我可以使用“new”操作符来实现,即: b = new a(); 如何使用对象文字创建对象的新实例?最简单的方法是使用对象。创建 var b = Object.create(a); console.log(b.a); //1 console.log(b.b); //2 当然,如果您需要支持较旧的浏览器,您可以为对象获取MDN垫片。create请参阅使用此方法,如果不小心,是

我有以下对象文字:

var a = {a:1,b:2}
现在我想要同一对象的另一个实例。如果我使用的是构造函数,我可以使用“new”操作符来实现,即:

b = new a(); 

如何使用对象文字创建对象的新实例?

最简单的方法是使用
对象。创建

var b = Object.create(a);

console.log(b.a); //1
console.log(b.b); //2


当然,如果您需要支持较旧的浏览器,您可以为
对象获取MDN垫片。create

请参阅使用此方法,如果不小心,是否有造成内存泄漏的风险?如果一个对象像这样反复“克隆”,那么它的原型链将增长,原型链中的所有对象将永远不会被垃圾收集,因为对它们的活动引用将保留下来。这不是一个大问题,因为大多数JavaScript脚本都是短期的,但我认为意识到这种可能性是明智的。@CDSanchez-是的-新对象似乎与旧对象的原型相同-我认为原型不会增长。如果您克隆了
a
100次,您将有100个对象引用回
a
。所以是的,
a
不能被垃圾收集,但我不认为这是一个大问题,我指的是,如果你不知何故继续克隆那些被克隆的对象。例如,
a={};循环99次{a=Object.create(a)}
在这种情况下,原型链的末尾将有100个对象,前面将有99个对象。在实践中,有人可能会做这样的事情,这并不是完全不可想象的。不管怎样,我还是不说了,因为这可能不会影响OP-我只是想指出这一点。@CDSanchez-哦,是的-那太糟糕了。对。