I am trying to do the following:
var element = {};
element.attrA = 'A';
element.attrB = 1;
element.autoAdvance = function(){
   var that = this;
   setInterval(function(){
     that.attrB++;
   },100);
}
element.instance = function(){
   var clone = $.extend(true, {}, this);
   return clone;
}
Now I can do the following just fine:
var e1 = element.instance();
var e2 = element.instance();
e1.attrA = 'not e2s business';
e2.attrA = 'not e1s attrA';
The trouble starts when I try to use autoAdvance:
e1.autoAdvance();
will start the autoAdvance for all cloned 'instances' of element. I am sure this is probably rather trivial but I just don't know how to refer to the parent object inside my autoAdvance-function in a way that it gets properly cloned and only affects the instance. Thanks!
EDIT:
This is the actual code I am using:
var player = {}; 
player.sprites = {};
player.sprites.back = ['img/playerback_01.png','img/playerback_02.png','img/playerback_03.png'];
player.sprites.head = ['img/playerhead_01.png','img/playerhead_02.png','img/playerhead_03.png'];
player.back = new Image();
player.back.src = player.sprites.back[0];
player.head = new Image();
player.head.src = player.sprites.head[0];
player.loop = function(){
    var that = this;
    var loop = setInterval(function(){
            //remove the [0] state from the sprite array and add it at [2]
        var state = that.sprites.head.shift();
        that.sprites.head.push(state);
        state = that.sprites.back.shift();
        that.sprites.back.push(state);
        that.back.src = that.sprites.back[0];
        that.head.src = that.sprites.head[0];
        }, 100);
}
player.x = 0;
player.y = 0;
player.instance = function(){
   var clone = $.extend(true, {}, this);
   return clone;
}
I generate two players:
var player1 = player.instance();
var player2 = player.instance();
But what is happening is that when I use:
player1.loop();
The animation for player2 will start to play as well.
 
    