-
При передаче объектов в качестве параметров 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
.
Вопрос
- Есть ли лучший способ передать объекты по значению, кроме создания локальной копии/клона?