I am facing a strange problem in JavasSript.
There are three variables (declared as var), they all store an object; say var object1, object2 and object3.
Ok, so what I do now is I assign object2=object1 and object3=object1.
And when I add something to object2, it automatically gets added to object3. Strange? :|
Please help. I think I am missing some basic funda here, but I am not able to catch it.
3 Answers 3
So how is that strange?
You pass reference to the object and do not clone the object. So any modification of your variables object1 to object3 actually refer to the same object, thus "automatically updating all variables".
3 Comments
When you assign opject2 = object1, you are not making a copy of object1, you are simply asking that both names refer to the same object. You need to make a new object and copy the attributes from object1 into it. How you do that depends on what Javascript libraries you have available to you.
jQuery provides copying techniques described here
2 Comments
you have to clone the object or use Object.create(object) function and pass the object so it will create new one object not assign the reference
see images
var obj1 = {key: 1}
var obj2 = Object.assign({},obj1)
Objectin Javascript is passed by reference.object2=object1changes theobject2variable to reference the object inobject1, it doesn't copy it.