From d7ca1c5c6e75648793d670299c9059b6db9b1715 Mon Sep 17 00:00:00 2001 From: Evan You Date: Fri, 17 Apr 2020 10:23:10 -0400 Subject: [PATCH] fix(runtime-core): fix user attched public instance properties that start with "$" --- packages/runtime-core/__tests__/componentProxy.spec.ts | 5 +++++ packages/runtime-core/src/componentProxy.ts | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/packages/runtime-core/__tests__/componentProxy.spec.ts b/packages/runtime-core/__tests__/componentProxy.spec.ts index d5d46c25..706fad4a 100644 --- a/packages/runtime-core/__tests__/componentProxy.spec.ts +++ b/packages/runtime-core/__tests__/componentProxy.spec.ts @@ -117,6 +117,11 @@ describe('component: proxy', () => { instanceProxy.foo = 1 expect(instanceProxy.foo).toBe(1) expect(instance!.ctx.foo).toBe(1) + + // should also allow properties that start with $ + const obj = (instanceProxy.$store = {}) + expect(instanceProxy.$store).toBe(obj) + expect(instance!.ctx.$store).toBe(obj) }) test('globalProperties', () => { diff --git a/packages/runtime-core/src/componentProxy.ts b/packages/runtime-core/src/componentProxy.ts index 183207e9..bee09ee8 100644 --- a/packages/runtime-core/src/componentProxy.ts +++ b/packages/runtime-core/src/componentProxy.ts @@ -184,6 +184,10 @@ export const PublicInstanceProxyHandlers: ProxyHandler = { (cssModule = cssModule[key]) ) { return cssModule + } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) { + // user may set custom properties to `this` that start with `$` + accessCache![key] = AccessTypes.CONTEXT + return ctx[key] } else if ( // global properties ((globalProperties = appContext.config.globalProperties),