オブジェクトをパラメーターとして渡す場合、JavaScriptは参照によってそれらを渡し、オブジェクトのローカルコピーの作成を困難にします。
var o = {}; (function(x){ var obj = x; obj.foo = 'foo'; obj.bar = 'bar'; })(o)oとに.fooなり.barます。これを複製することで回避できます。簡単な例:
var o = {}; function Clone(x) { for(p in x) this[p] = (typeof(x[p]) == 'object')? new Clone(x[p]) : x[p]; } (function(x){ var obj = new Clone(x); obj.foo = 'foo'; obj.bar = 'bar'; })(o)o.fooまたははありません.bar。
質問
- ローカルコピー/クローンを作成する以外に、値でオブジェクトを渡すより良い方法はありますか?