From dd02cf37d5f5a6946bcae01ee70568e38a82c177 Mon Sep 17 00:00:00 2001 From: HcySunYang Date: Thu, 4 Feb 2021 02:28:07 +0800 Subject: [PATCH] perf(reactivity): should not track `__isVue` (#2940) --- packages/reactivity/src/baseHandlers.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/reactivity/src/baseHandlers.ts b/packages/reactivity/src/baseHandlers.ts index 5f57a3c9f90..694893265be 100644 --- a/packages/reactivity/src/baseHandlers.ts +++ b/packages/reactivity/src/baseHandlers.ts @@ -22,10 +22,13 @@ import { hasChanged, isArray, isIntegerKey, - extend + extend, + makeMap } from '@vue/shared' import { isRef } from './ref' +const isNonTrackableKeys = /*#__PURE__*/ makeMap(`__proto__,__v_isRef,__isVue`) + const builtInSymbols = new Set( Object.getOwnPropertyNames(Symbol) .map(key => (Symbol as any)[key]) @@ -93,7 +96,7 @@ function createGetter(isReadonly = false, shallow = false) { if ( isSymbol(key) ? builtInSymbols.has(key as symbol) - : key === `__proto__` || key === `__v_isRef` + : isNonTrackableKeys(key) ) { return res }