2

我想基于现有的 JavaScript 对象创建一个新的 JavaScript 对象。
到现在为止,我的研究使我想到了 jQuery 扩展功能。

例子:

var object1 = {
    name:'same name',
    age:'1',
    occupation:'programmer'
}
var object2 = {
    name:'same new name'
}

现在,当我打电话时:

$.extend({},object1,object2);

它工作得很好,我的问题是当我在对象中有对象成员时!

var object1 = {
    name:'same name',
    age:19,
    occupation:'programmer',
    parent:{
        name:'parent name',
        age:35
    }
}
var object2 = {
    name:'same new name',
    parent:{
        age:40
    }
}

现在,当我打电话时

$.extend({},object1,object2);

object1.parent 是:

{
    age:40
}

我希望它是:

{
    name:'same new name',
    age:40
}

有没有办法做到这一点?

4

3 回答 3

5

为 jQuer.extend() 方法使用deep参数,您的代码应为:

$.extend(true,{},object1,object2)
于 2012-05-21T14:49:58.080 回答
1

你要做的是执行一个深度扩展

$.extend(true, {},object1,object2);
于 2012-05-21T14:51:01.510 回答
1

您可以像这样强制$.extend执行深层复制:

$.extend(true, {},object1,object2);

虽然$.extend没有创建继承层次结构,但它只是复制属性。

于 2012-05-21T14:53:01.693 回答