2012-05-21 2 views
2

Я хочу создать новый объект JavaScript на основе существующего объекта JavaScript.
До сих пор мое исследование привело меня к функции расширения jQuery.

пример:Как достичь наследования объектов JavaScript?

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 
} 

Есть ли способ добиться этого?

+0

Btw, ваше решение не имеет ничего общего с наследованием, оно просто копирует свойства. –

ответ

5

использование глубоко параметр для jQuer.extend() метод, ваш код должен быть:

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

То, что вы должны сделать, это выполнить глубокий простираться

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

Вы можете принудительно $.extend сделать глубокую копию следующим образом:

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

, хотя $.extend не создает иерархию наследования настолько, насколько просто копирует свойства.

Смежные вопросы