I\'ve noticed this behavior when writing my JavaScript, and I haven\'t been able to figure out why:
Below is some code to reproduce the behavior in question.
Because you are setting the objects to the same reference point. You need to clone the object. here is a piece of code from http://www.thespanner.co.uk/2008/04/10/javascript-cloning-objects/ that allows for cloning of objects with prototyping.
Object.prototype.clone = function() {
return eval(uneval(this));
}
alert("test".clone());
alert((3).clone());
alert(clone.clone());
Because both variables reference the same object. Objects are not cloned/copied on variable assignment. You would have to do this yourself.
JavaScript behaves the same way like any (most) other OO languages in this case.
By writing var o2 = o1;
you're making o1
and o2
two references to the same object. What you want to do is to clone the o1
object and to store the cloned copy in o2
. Search for cloning objects in JavaScript.