]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
refactor(reactivity): change _isRef to use refSymbol as key (#124)
authorCarlos Rodrigues <carlos@hypermob.co.uk>
Sun, 6 Oct 2019 15:46:09 +0000 (16:46 +0100)
committerEvan You <yyx990803@gmail.com>
Sun, 6 Oct 2019 15:46:08 +0000 (11:46 -0400)
packages/reactivity/src/computed.ts
packages/reactivity/src/ref.ts

index c22a33e4b239ea7e0a477faed73015603962749a..4e11b7c754041f07ae0a3ccdd1bb85394c32f539 100644 (file)
@@ -45,7 +45,7 @@ export function computed<T>(
     }
   })
   return {
-    _isRef: refSymbol,
+    [refSymbol]: true,
     // expose effect so computed can be stopped
     effect: runner,
     get value() {
index ff25d371d3673475e15f8795ed052f09af9d17fb..b0de05863b8e4e6ff69e9575c5c35bdad69651fa 100644 (file)
@@ -3,11 +3,10 @@ import { OperationTypes } from './operations'
 import { isObject } from '@vue/shared'
 import { reactive } from './reactive'
 
-export const refSymbol = Symbol()
-export type RefSymbol = typeof refSymbol
+export const refSymbol = Symbol(__DEV__ ? 'refSymbol' : undefined)
 
 export interface Ref<T> {
-  _isRef: RefSymbol
+  [refSymbol]: true
   value: UnwrapNestedRefs<T>
 }
 
@@ -18,7 +17,7 @@ const convert = (val: any): any => (isObject(val) ? reactive(val) : val)
 export function ref<T>(raw: T): Ref<T> {
   raw = convert(raw)
   const v = {
-    _isRef: refSymbol,
+    [refSymbol]: true,
     get value() {
       track(v, OperationTypes.GET, '')
       return raw
@@ -32,7 +31,7 @@ export function ref<T>(raw: T): Ref<T> {
 }
 
 export function isRef(v: any): v is Ref<any> {
-  return v ? v._isRef === refSymbol : false
+  return v ? v[refSymbol] === true : false
 }
 
 export function toRefs<T extends object>(
@@ -50,7 +49,7 @@ function toProxyRef<T extends object, K extends keyof T>(
   key: K
 ): Ref<T[K]> {
   const v = {
-    _isRef: refSymbol,
+    [refSymbol]: true,
     get value() {
       return object[key]
     },