whole_func_string: function proxyDataGetter(ctx, prop) {
      let proxyProps = ctx.__proxyProps;
      proxyProps || (proxyProps = ctx.__proxyProps = {});
      if (proxyProps[prop]) {
          return;
      }
  
      proxyProps[prop] = true;
  
      let descriptor = Object.getOwnPropertyDescriptor(ctx, prop);
      if (descriptor && descriptor.configurable) {
          let newDescriptor = Object.assign({}, descriptor, {
              get() {
                  ctx.__deps && ctx.__deps.push(prop);
                  return descriptor.get && descriptor.get.call(ctx);
              }
          });
          Object.defineProperty(ctx, prop, newDescriptor);
      }
      else {
          console.warn('cannot configure the data prop descriptor info:', prop);
      }
  }
func_code_string: function proxyDataGetter(ctx, prop) {
      let proxyProps = ctx.__proxyProps;
      proxyProps || (proxyProps = ctx.__proxyProps = {});
      if (proxyProps[prop]) {
          return;
      }
  
      proxyProps[prop] = true;
  
      let descriptor = Object.getOwnPropertyDescriptor(ctx, prop);
      if (descriptor && descriptor.configurable) {
          let newDescriptor = Object.assign({}, descriptor, {
              get() {
                  ctx.__deps && ctx.__deps.push(prop);
                  return descriptor.get && descriptor.get.call(ctx);
              }
          });
          Object.defineProperty(ctx, prop, newDescriptor);
      }
      else {
          console.warn('cannot configure the data prop descriptor info:', prop);
      }
  }
func_documentation_string: Proxy data getter
  
  @inner
  @param {Object} ctx the component instance
  @param {string} prop the property name