ai suoi tempi avevo risolto clonando il vettore

codice:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>Pagina senza titolo</title>

<script language="javascript" type="text/javascript">
// <!CDATA[
Array.prototype.clone = function () 
{
    var tmp = [];
    for(var i in this)
    {
        if(this[i].constructor == Array)
        {
            tmp[i] = this[i].slice(0);
        }
        else
        {
            tmp[i] = this[i];
        }
    }
    return tmp;
};

function $() 
{
    var elements = new Array();

    for (var i = 0; i < arguments.length; i++) 
    {
        var element = arguments[i];
        if (typeof element == 'string')
            element = document.getElementById(element);

        if (arguments.length == 1)
            return element;

        elements.push(element);
    }

    return elements;
}




function Button1_onclick() 
{
    var v = $("TextArea1");
    
    var a = [10,20,30];//vettore originale
    v.value = "a = " + a + "\r\n";//mostro vettore originale
    
    var b = a;//assegno a b l'indirizzo di a
    v.value += "b = " + b + "\r\n";//mostro b
    b[1] = 999;//modifico un elemento
    
    v.value += "a = " + a + "\r\n";//mostro che ho modificato il vettore originale
}

function Button2_onclick() 
{
    var v = $("TextArea1");
    
    var a = [10,20,30];//vettore originale
    v.value = "a = " + a + "\r\n";//mostro a
    
    var b = a.clone();//b punta ad un clone di a
    v.value += "b = " + b + "\r\n";//mostro b
    b[1] = 999;//modifico b
    
    v.value += "a = " + a + "\r\n";//mostro che a è intatto
}

// ]]>
</script>
</head>
<body>
    <input id="Button1" type="button" value="button" onclick="return Button1_onclick()" />
    <input id="Button2" type="button" value="button" onclick="return Button2_onclick()" />
    


    <textarea id="TextArea1" style="width: 573px; height: 406px"></textarea>
</body>
</html>