whole_func_string: function addDataChangeWatcher(ctx, prop, deep) {
      // in quick app, the watch handler does not support dynamic added methods
      // let handler = '__handleDataChange$' + prop;
      // ctx[handler] = (newVal, oldVal) => ctx.__handleDataChange(
      //     prop, newVal, oldVal
      // );
  
      // FIXME: array cannot support deep watch in quick app when change array item info
      let handlerName = getInnerWatcher(prop);
      watchDataChange.call(ctx, prop, handlerName, {deep});
  }
func_code_string: function addDataChangeWatcher(ctx, prop, deep) {
      // in quick app, the watch handler does not support dynamic added methods
      // let handler = '__handleDataChange$' + prop;
      // ctx[handler] = (newVal, oldVal) => ctx.__handleDataChange(
      //     prop, newVal, oldVal
      // );
  
      // FIXME: array cannot support deep watch in quick app when change array item info
      let handlerName = getInnerWatcher(prop);
      watchDataChange.call(ctx, prop, handlerName, {deep});
  }
func_documentation_string: Add data change watcher
  
  @inner
  @param {Object} ctx the component instance
  @param {string} prop the data prop name
  @param {boolean=} deep whether watch deep