From: Evan You Date: Tue, 20 Apr 2021 21:13:58 +0000 (-0400) Subject: fix(watch): avoid traversing non-plain objects X-Git-Tag: v3.1.0-beta.1~59^2~19 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=62b8f4a39ca56b48a8c8fdf7e200cb80735e16ae;p=thirdparty%2Fvuejs%2Fcore.git fix(watch): avoid traversing non-plain objects --- diff --git a/packages/runtime-core/src/apiWatch.ts b/packages/runtime-core/src/apiWatch.ts index 5dc7929ee3..b2cf45001f 100644 --- a/packages/runtime-core/src/apiWatch.ts +++ b/packages/runtime-core/src/apiWatch.ts @@ -18,7 +18,8 @@ import { NOOP, remove, isMap, - isSet + isSet, + isPlainObject } from '@vue/shared' import { currentInstance, @@ -391,9 +392,9 @@ function traverse(value: unknown, seen: Set = new Set()) { value.forEach((v: any) => { traverse(v, seen) }) - } else { + } else if (isPlainObject(value)) { for (const key in value) { - traverse(value[key], seen) + traverse((value as any)[key], seen) } } return value