Вы читаете свойства var p in obj1
, поэтому эти индексы обязательно существуют только в obj1
.Таким образом, попытка присвоить obj1[p] = obj2[p];
не будет работать должным образом, поскольку нет никакой гарантии (и в вашем конкретном примере это, безусловно, имеет место), что obj[p]
определено.Это назначение просто присваивает undefined
индексам в obj1
, которых нет в obj2
, и копирует значения, индексы которых существуют в obj2
.
. Вам необходимо циклически переключаться на свойства каждого объектаотдельно (т.е. два цикла), хотя это тоже не очень хорошая идея, поскольку любые значения с одинаковым индексом в обоих объектах приведут к стиранию одного.Чего вы на самом деле пытаетесь достичь этим?Это кажется очень опасным / нестабильным поступком.