Skip to content
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions reflections/shape/shape-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -711,6 +711,13 @@ QUnit.test("assignDeepList", function(){
], "assigned right");
});

QUnit.test("assignDeep copy #150", function() {
var obj = {};
var objMap = {prop: { foo: 'bar' }};
shapeReflections.assignDeep(obj, objMap);
QUnit.notEqual(obj.prop, objMap.prop, "copy without referencing");
});


/*QUnit.test("getAllEnumerableKeys", function(){

Expand Down
8 changes: 7 additions & 1 deletion reflections/shape/shape.js
Original file line number Diff line number Diff line change
Expand Up @@ -821,7 +821,13 @@ shapeReflections = {
shapeReflections.eachKey(source, function(newVal, key){
if(!hasOwnKey(key)) {
// set no matter what
getSetReflections.setKeyValue(target, key, newVal);
if (typeReflections.isMapLike(newVal)) {
// newVal needs to be serialized to make sure
// the value is copied not referenced
getSetReflections.setKeyValue(target, key, shapeReflections.serialize(newVal));
} else {
getSetReflections.setKeyValue(target, key, newVal);
}
} else {
var curVal = getKeyValue.call(target, key);

Expand Down