]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
perf(reactivity): should not track `__isVue` (#2940)
authorHcySunYang <HcySunYang@outlook.com>
Wed, 3 Feb 2021 18:28:07 +0000 (02:28 +0800)
committerGitHub <noreply@github.com>
Wed, 3 Feb 2021 18:28:07 +0000 (19:28 +0100)
packages/reactivity/src/baseHandlers.ts

index 5f57a3c9f9012d457703dcb4c016d85ec5c0a333..694893265beb8fb4e7af9ca324cee587df94af7f 100644 (file)
@@ -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
     }