var tmp1 = new Array();
tmp1 = [0,1,2,3,4];

と入ってたとして、tmp1の中身を丸々コピーしたい時に

var tmp2 = new Array();
tmp2,assign(tmp1);

だと通るけど、構造の一部分をコピーしたい時に

tmp2[0],assign(tmp1[3]);

だと通らず、かといってtmp2[0] = tmp1[3]だと参照をコピるだけだからtmp1の中身を変えるとtmp2も変わってしまう
こういう時はどうすればいいんでしょう?