Skip to main content

DEEP COPY OF A OBJECT IN JAVASCRIPT IN A GOOD WAY


 so suppose i have a object which contain 2 values one x and other y


let point={x:100,y:200};

now i wld try to copy this object to a another object


let other=point;


 if i change other array value it would changes the point array to like this

other.x=500;

console.log(point.x);
console.log(other.x);


that not what we want the reason behind this both variable referencing towards same memory address.

 in c++ we have three options 
    1. we can pass variable by value that would create a new copy
    2. by reference same as above 
        3. by pointer like reference by not automatic memory release after use you have to delete the variable


so how i do a deep copy in javascript so it can be applied to the complex structures here is my method for that


deep copy of a object

code below

let parentObject={
  name:"manish",
  sal:"9000000",
  others:{
      manager:"abc",
      age:45,
      what:{
        arr:[1,2,3,4]
      } 
  }
}

Object.prototype.deepCopy=function(x)
{
    for(let [key,value] of Object.entries(this))
    {
     
        if(typeof value==="object")
        {
            x[key]=new Object();
            value.deepCopy(x[key])
        }else
        {
           x[key]=value;
        }
     
    }
    return x;
    
}


var deepCopyObject=parentObject.deepCopy(new Object());
deepCopyObject.name="oops";
console.log(deepCopyObject);
console.log(parentObject);

as you see i changed deepCopyObject name propetry but its does not change the parentObject name


Comments

Popular posts from this blog

Better Memory management with PixiJS or How to manage cpu and cpu memory in PixiJS.

PixiJS is my favorite framework when i am looking for a web games specially for mobile or desktop  PixiJS is fast blazing fast and you can get a decent FPS even on older device.   so here is my optimization techniques for PixiJs 1. manage your sprites in a better way use spritesheet to reduce the draw calls create big sprite sheet which contain multiple sprites can be draw in gpu with a single draw call. use TexturePacker  https://www.codeandweb.com/texturepacker  best tool when its comes to spritesheet 2. for floating point calculation round off calculation for example let  speed = 0.75 ; let  position = 100 ; console . log ( Math . round ( speed * position )) 3. don't create very big canvas when u need a big canvas size game just try to create a small canvas and translate it. 4. its very important one managing TextureCache in memory you can get all TextureCache list by using  Object.entries(PIXI.utils.TextureCache); so even you use ap...

adding particles Effect in pixijs using https://pixijs.io/pixi-particles-editor/

adding particle in pixijs is very easy using the below tool more information can be found below https://github.com/pixijs/pixi-particles https://pixijs.io/pixi-particles-editor/ required packages  /// < reference path = "node_modules/pixi-particles/ambient.d.ts" /> import 'pixi-particles' code of particle delcare a     global variable   private emitter ?: Emitter ; const img = PIXI . Texture . from ( "./assets/images/particle.png" ); this . emitter = new Emitter ( this ,[ img ],{ "alpha" : { "start" : 0.62 , "end" : 0.39 }, "scale" : { "start" : 0.1 , "end" : 0.9 , "minimumScaleMultiplier" : 1.25 }, "color" : { "start" : "#ffff8f" , "end" : ...