code: function _watch(vm, vars, update) {
      var watchKeys = []
      function _handler (kp) {
          if (watchKeys.some(function(key) {
              if (_relative(kp, key)) {
                  return true
              }
          })) update.apply(null, arguments)
      }
  
      if (vars && vars.length) {
          vars.forEach(function (k) {
              if (~keywords.indexOf(k)) return
              while (k) {
                  if (!~watchKeys.indexOf(k)) watchKeys.push(k)
                  k = util.digest(k)
              }
          })
          if (!watchKeys.length) return noop
          return vm.$watch(_handler)
      }
      return noop
  }
docs: watch changes of variable-name of keypath
  @return <Function> unwatch