Это потому, что myObjQuery и myObj - это один и тот же объект. Когда вы делаете myObjQuery = myObj
, вы не делаете копию самого объекта, а скорее копию ссылки на него. Вы никогда непосредственно не манипулируете объектами в JavaScript, а не всегда через ссылку.
EDIT: Клонирование объектов в JavaScript не является простым. У большинства библиотек, таких как jQuery или Ext, есть средства для этого. Чтобы сделать это вручную, что-то вроде этого работает.
var clone = {};
for(var prop in myObj) {
if(myObj.hasOwnProperty(prop)) {
clone[prop] = myObj[prop];
}
}
Имейте в виду, что это мелкая копия. Чтобы сделать глубокую копию, вам нужно определить, являются ли сами свойства объектами и рекурсивно клонировать их тоже. Лучше всего использовать библиотеку, которая сделает все это за вас. И также имейте в виду, что это не так много красных случаев и странных вещей, как свойство конструктора объекта. JavaScript здесь действительно грязный.
Попробуйте эту тему: [Javascript клонировать объект теряет свои функции прототипа] (http://stackoverflow.com/questions/10151216/javascript-cloned-object-looses-its-prototype-functions) – RobG
Является ли реальный вопрос * как клонировать объект JavaScript? * – alex