Question: I just found out the hard way objects are passed by reference in Javascript, for example:

```
for(var layer = 0; layer < hudLayers['layers'].length; layer++){

    // Store the to-be-calculated values in this object
    var tempValues = hudLayers['layers'][layer];

    tempValues['name'] = 'test';
}

```

This will change the value in tempValues and hudLayers.
(Seems kind of obvious, but a post without a bit of code seems so naked.)

Is there a quick way around this?

Answer: 
This is not an example of passing by reference (you aren't passing any parameters).
However, you're correct; assigning an object will not make a deep copy.

You can make a deep copy of an object like this:

```
function deepCopy(obj) {
    if (typeof obj !== "object") return obj;
    if (obj.constructor === RegExp) return obj;

    var retVal = new obj.constructor();
    for (var key in obj) {
        if (!obj.hasOwnProperty(key)) continue;
        retVal[key] = deepCopy(obj[key]);
    }
    return retVal;
}

```

Note that if an object's constructor has any side-effects, this code will trigger them.
Making a deep copy of an object is as simple as `objCopy = obj.toSource();`.

[.toSource on MDN](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/toSource)