File tree Expand file tree Collapse file tree 1 file changed +10
-6
lines changed
Expand file tree Collapse file tree 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 () {
334334 * @param {* } val
335335 */
336336
337- function traverse ( val , walkedObjs ) {
337+ const seenObjects = new Set ( )
338+ function traverse ( val , seen ) {
338339 var i , keys
339340
340- walkedObjs = walkedObjs || { }
341+ if ( ! seen ) {
342+ seen = seenObjects
343+ seen . clear ( )
344+ }
341345 if ( isArray ( val ) ) {
342346 i = val . length
343- while ( i -- ) traverse ( val [ i ] , walkedObjs )
347+ while ( i -- ) traverse ( val [ i ] , seen )
344348 } else if ( isObject ( val ) ) {
345349 if ( val . __ob__ ) {
346350 var depId = val . __ob__ . dep . id
347- if ( walkedObjs [ depId ] ) {
351+ if ( seen . has ( depId ) ) {
348352 return
349353 } else {
350- walkedObjs [ depId ] = true
354+ seen . add ( depId )
351355 }
352356 }
353357
354358 keys = Object . keys ( val )
355359 i = keys . length
356- while ( i -- ) traverse ( val [ keys [ i ] ] , walkedObjs )
360+ while ( i -- ) traverse ( val [ keys [ i ] ] , seen )
357361 }
358362}
You can’t perform that action at this time.
0 commit comments