简体   繁体   English

如何实现JavaScript对象继承?

[英]How to achieve JavaScript Object inheritance?

I want create a new JavaScript object based on an existing JavaScript object. 我想基于现有的JavaScript对象创建一个新的JavaScript对象。
Till now my research led me to jQuery extend function. 直到现在,我的研究使我开始使用jQuery扩展功能。

example: 例:

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

Now, when I call: 现在,当我打电话给:

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

it works perfectly, my problem is when I have object member within the object! 它完美地工作,我的问题是当对象中有对象成员时!

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

Now, when I call 现在,当我打电话

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

object1.parent is: object1.parent是:

{
    age:40
}

I want it to be: 我希望它是:

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

Is there a way to achieve this? 有没有办法实现这个目标?

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

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

您要做的是进行深度扩展

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

You can force $.extend to do a deep copy like so: 您可以强制$.extend进行深拷贝,如下所示:

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

although $.extend doesn't create an inheritance hierarchy so much as it just copies properties. 尽管$.extend并不会创建继承层次结构,而只是复制属性。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM