Armour: side-effects-free JavaScript
github.com
github.com
I suggest using persistent DS libs like immutable.js. You just let that object loose in the code and not worry about side effects happening on the object you are referencing at some point in the code.
Sure, they may have the same overhead, but the idea is that your code doesn't do unnecessary defensive cloning all over the place. Plus, defensive cloning is an eyesore in code. It isn't UI logic, it isn't business logic. It's just technical debt waiting to happen.