JavaScriptではObjectは常に参照渡しされる

タイトルのそのままなんだけど

例えばこのような式があったとする


1 x = function(){
2 var y = new Object();
3 var z = y;
4 y.example1 = "test1";
5 z.example2 = "test2";
6 return {value1:y,value2:z};
7 }

普通に考えるとreturnで帰ってくるのは{value1:{example1:"test1"},value2:{example2:"test2"}}だと思うでしょう。
しかしJavaScriptはObjectは全て参照なので
{value1:{example1:"test1",example2:"test2"},value2:{example1:"test1",example2:"test2"}}
こうなってしまうわけです。(参照なのでこれは正確ではありませんが

つまり、Objectを作りっぱなしにするとクロージャ辺りでメモリリークの原因になる可能性があると。
まあ最近のGCは性能が良いのでほとんど起こらないでしょうが