diff --git a/src/reactivity/__tests__/reactive.spec.ts b/src/reactivity/__tests__/reactive.spec.ts index 1b4c705..0e8caf3 100644 --- a/src/reactivity/__tests__/reactive.spec.ts +++ b/src/reactivity/__tests__/reactive.spec.ts @@ -6,6 +6,12 @@ describe("reactive", () => { expect(observed).not.toBe(original); expect(isReactive(observed)).toBe(true); expect(isReactive(original)).toBe(false); + // hack + const evil = { + __v_isReactive: true, + __v_isReadonly: true, + } + expect(isReactive(evil)).toBe(false) // get expect(observed.foo).toBe(1); // // has diff --git a/src/reactivity/__tests__/readonly.spec.ts b/src/reactivity/__tests__/readonly.spec.ts index 06da20c..8848b48 100644 --- a/src/reactivity/__tests__/readonly.spec.ts +++ b/src/reactivity/__tests__/readonly.spec.ts @@ -14,6 +14,12 @@ describe("readonly", () => { expect(isReadonly(wrapped.bar)).toBe(true); expect(isReactive(original.bar)).toBe(false); expect(isReadonly(original.bar)).toBe(false); + // hack + const evil = { + __v_isReactive: true, + __v_isReadonly: true, + } + expect(isReadonly(evil)).toBe(false) // get expect(wrapped.foo).toBe(1); }); diff --git a/src/reactivity/src/reactive.ts b/src/reactivity/src/reactive.ts index ac87c19..cf24b8b 100644 --- a/src/reactivity/src/reactive.ts +++ b/src/reactivity/src/reactive.ts @@ -8,11 +8,11 @@ export const reactiveMap = new WeakMap(); export const readonlyMap = new WeakMap(); export const shallowReadonlyMap = new WeakMap(); -export const enum ReactiveFlags { - IS_REACTIVE = "__v_isReactive", - IS_READONLY = "__v_isReadonly", - RAW = "__v_raw", -} +export const ReactiveFlags = { + IS_REACTIVE : Symbol("__v_isReactive"), + IS_READONLY : Symbol("__v_isReadonly"), + RAW : Symbol("__v_raw"), +} as const export function reactive(target) { return createReactiveObject(target, reactiveMap, mutableHandlers);