实现 app.call() 和 hook