diff --git a/src/mixin.ts b/src/mixin.ts index 3dc3b191..9bdc197a 100644 --- a/src/mixin.ts +++ b/src/mixin.ts @@ -149,8 +149,8 @@ export function mixin(Vue: VueConstructor) { } } - function customReactive(target: object, visited = new Set()) { - if (visited.has(target)) return + function customReactive(target: object, seen = new Set()) { + if (seen.has(target)) return if ( !isPlainObject(target) || isRef(target) || @@ -166,8 +166,8 @@ export function mixin(Vue: VueConstructor) { const val = target[k] defineReactive(target, k, val) if (val) { - visited.add(val) - customReactive(val, visited) + seen.add(val) + customReactive(val, seen) } return }) diff --git a/src/reactivity/reactive.ts b/src/reactivity/reactive.ts index 291a990f..86f3e063 100644 --- a/src/reactivity/reactive.ts +++ b/src/reactivity/reactive.ts @@ -135,11 +135,11 @@ export function observe(obj: T): T { /** * Mock __ob__ for object recursively */ -function mockReactivityDeep(obj: any, seen = new WeakMap()) { +function mockReactivityDeep(obj: any, seen = new Set()) { if (seen.has(obj)) return def(obj, '__ob__', mockObserver(obj)) - seen.set(obj, true) + seen.add(obj) for (const key of Object.keys(obj)) { const value = obj[key]