@@ -54,27 +54,24 @@ function newContext() {
54
54
Object . keys ( commands ) . join ( ', ' )
55
55
) ;
56
56
57
- var newObject = object ;
57
+ var nextObject = object ;
58
58
var specKeys = getAllKeys ( spec )
59
59
var index , key ;
60
60
for ( index = 0 ; index < specKeys . length ; index ++ ) {
61
61
var key = specKeys [ index ] ;
62
62
if ( hasOwnProperty . call ( commands , key ) ) {
63
- return commands [ key ] ( spec [ key ] , newObject , spec , object ) ;
63
+ nextObject = commands [ key ] ( spec [ key ] , nextObject , spec , object ) ;
64
+ } else {
65
+ var nextValueForKey = update ( object [ key ] , spec [ key ] ) ;
66
+ if ( nextValueForKey !== nextObject [ key ] ) {
67
+ if ( nextObject === object ) {
68
+ nextObject = copy ( object ) ;
69
+ }
70
+ nextObject [ key ] = nextValueForKey ;
71
+ }
64
72
}
65
73
}
66
- for ( index = 0 ; index < specKeys . length ; index ++ ) {
67
- var key = specKeys [ index ] ;
68
- var nextValueForKey = update ( object [ key ] , spec [ key ] ) ;
69
- if ( nextValueForKey === object [ key ] ) {
70
- continue ;
71
- }
72
- if ( newObject === object ) {
73
- newObject = copy ( object ) ;
74
- }
75
- newObject [ key ] = nextValueForKey ;
76
- }
77
- return newObject ;
74
+ return nextObject ;
78
75
}
79
76
80
77
}
@@ -88,8 +85,8 @@ var defaultCommands = {
88
85
invariantPushAndUnshift ( original , spec , '$unshift' ) ;
89
86
return value . concat ( original ) ;
90
87
} ,
91
- $splice : function ( value , newObject , spec , object ) {
92
- var originalValue = newObject === object ? copy ( object ) : newObject ;
88
+ $splice : function ( value , nextObject , spec , object ) {
89
+ var originalValue = nextObject === object ? copy ( object ) : nextObject ;
93
90
invariantSplices ( originalValue , spec ) ;
94
91
value . forEach ( function ( args ) {
95
92
invariantSplice ( args ) ;
@@ -101,8 +98,8 @@ var defaultCommands = {
101
98
invariantSet ( spec ) ;
102
99
return value ;
103
100
} ,
104
- $merge : function ( value , newObject , spec , object ) {
105
- var originalValue = newObject === object ? copy ( object ) : newObject ;
101
+ $merge : function ( value , nextObject , spec , object ) {
102
+ var originalValue = nextObject === object ? copy ( object ) : nextObject ;
106
103
invariantMerge ( originalValue , value ) ;
107
104
getAllKeys ( value ) . forEach ( function ( key ) {
108
105
originalValue [ key ] = value [ key ] ;
0 commit comments