diff --git a/src/data.ts b/src/data.ts index 259df50..ae276ac 100644 --- a/src/data.ts +++ b/src/data.ts @@ -4,6 +4,7 @@ import { noop, warn } from './util' export function collectDataFromConstructor (vm: Vue, Component: VueClass) { // override _init to prevent to init as Vue instance + const originalInit = Component.prototype._init Component.prototype._init = function (this: Vue) { // proxy to actual vm const keys = Object.getOwnPropertyNames(vm) @@ -29,6 +30,9 @@ export function collectDataFromConstructor (vm: Vue, Component: VueClass) { // should be acquired class property values const data = new Component() + // restore original _init to avoid memory leak (#209) + Component.prototype._init = originalInit + // create plain data object const plainData = {} Object.keys(data).forEach(key => {