这些封到闭包里，只有 callback 可以暴露给 window