File tree 1 file changed +10
-6
lines changed
1 file changed +10
-6
lines changed Original file line number Diff line number Diff line change @@ -334,25 +334,29 @@ Watcher.prototype.teardown = function () {
334
334
* @param {* } val
335
335
*/
336
336
337
- function traverse ( val , walkedObjs ) {
337
+ const seenObjects = new Set ( )
338
+ function traverse ( val , seen ) {
338
339
var i , keys
339
340
340
- walkedObjs = walkedObjs || { }
341
+ if ( ! seen ) {
342
+ seen = seenObjects
343
+ seen . clear ( )
344
+ }
341
345
if ( isArray ( val ) ) {
342
346
i = val . length
343
- while ( i -- ) traverse ( val [ i ] , walkedObjs )
347
+ while ( i -- ) traverse ( val [ i ] , seen )
344
348
} else if ( isObject ( val ) ) {
345
349
if ( val . __ob__ ) {
346
350
var depId = val . __ob__ . dep . id
347
- if ( walkedObjs [ depId ] ) {
351
+ if ( seen . has ( depId ) ) {
348
352
return
349
353
} else {
350
- walkedObjs [ depId ] = true
354
+ seen . add ( depId )
351
355
}
352
356
}
353
357
354
358
keys = Object . keys ( val )
355
359
i = keys . length
356
- while ( i -- ) traverse ( val [ keys [ i ] ] , walkedObjs )
360
+ while ( i -- ) traverse ( val [ keys [ i ] ] , seen )
357
361
}
358
362
}
You can’t perform that action at this time.
0 commit comments