text: import Vue from 'vue';
  import { warn } from './util';
  export function collectDataFromConstructor(vm, Component) {
      // override _init to prevent to init as Vue instance
      const originalInit = Component.prototype._init;
      Component.prototype._init = function () {
          // proxy to actual vm
          const keys = Object.getOwnPropertyNames(vm);
          // 2.2.0 compat (props are no longer exposed as self properties)
          if (vm.$options.props) {
              for (const key in vm.$options.props) {
                  if (!vm.hasOwnProperty(key)) {
                      keys.push(key);
                  }
              }
          }
          keys.forEach(key => {
              if (key.charAt(0) !== '_') {
                  Object.defineProperty(this, key, {
                      get: () => vm[key],
                      set: value => { vm[key] = value; },
                      configurable: true
                  });
              }
          });
      };
      // 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 => {
          if (data[key] !== undefined) {
              plainData[key] = data[key];
          }
      });
      if (process.env.NODE_ENV !== 'production') {
          if (!(Component.prototype instanceof Vue) && Object.keys(plainData).length > 0) {
              warn('Component class must inherit Vue or its descendant class ' +
                  'when class property is used.');
          }
      }
      return plainData;
  }
  