function hooksDescriptor (instance, presetHooks = []) {
  instance.__hooks = {}
  presetHooks && presetHooks.map(item => {
    instance.__hooks[item] = null
  })
  Object.defineProperty(instance, 'hooks', {
    get: () => {
      return instance.__hooks && Object.keys(instance.__hooks).map(key => {
        if (instance.__hooks[key]) {
          return key
        }
      })
    }
  })
}
hook decorator, add hooks props for for an instance
@param { any } instance
@param { Array<string> } [hookNames]