2012-02-16 5 views
1

сказать, что есть три объекта с нотой, noteState, и история:добавления объекта в другой объект, который находится в другом объекте

var note = { 
    text: "hello new world" 
} 

var history = {} 
var noteState = {} 

как бы я иметь возможность добавлять заметки в noteState, а затем добавить примечаниеState в историю?

мог я потенциально сделать что-то вроде:

$.extend(noteState, {"note1": note}); 
$.extend(history, {"noteState1": noteState}); 

и если бы я вернуться к нему, чтобы захватить текст из записки, как бы я идти об этом?

history.noteState1.note1.text // ? 

или есть ли еще один способ для этого? Спасибо!

+0

При использовании .extend JQuery в() метод, вы на самом деле продлить объект , Например: если у вас есть obj1.text = "object one text"; и obj2.text = "object two text" ;, когда вы выполняете $ .extend (obj1, obj2), свойство 'text' объекта obj2 перезапишет obj1. Надеюсь, я объясню это хорошо :) –

ответ

3

Почему вы не просто

var note = { 
    text: "hello new world" 
} 

var history = {} 
var noteState = {} 

noteState.note = note; 
history.noteState= noteState; 
alert(history.noteState.note.text);//alerts hello new world 
0

Да, вы можете это сделать, и вам не нужно использовать расширение, просто установите свойства. Вы даже не должны использовать различные имена, так что следующий будет делать только штрафом:

noteState.note = note; 
history.noteState = noteState; 

Затем, так же, как вы написали, вы могли бы использовать

history.noteState.note.text 

для извлечения вложенных свойств.

0

Я думаю, вы также можете использовать Prototype свойство связывать ваши объекты

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