1. Proxy.revocable 临时凭证 在大型状态管理的设计取舍
Proxy.revocable 的临时凭证在大型状态管理中有何设计取舍?
- revocable 创建可撤销代理
- 撤销后访问抛 TypeError
- 临时访问凭证、权限收回与失效策略
Proxy.revocable(target, handler) 返回 {proxy, revoke}:revoke 调用后代理变为"已撤销",此后任何操作(读取、写入、in、delete 等)都抛 TypeError,且不可恢复。这使其成为"临时凭证"机制:把受限的只读访问权以代理形式发放给第三方(插件、低权限模块、iframe 桥接),到期或权限变更时 revoke 一次性收回,比事后删除属性更彻底(代理拦截点直接失效)。大型状态管理中的设计取舍:临时凭证适合"限时/限权的状态视图"(如只读调试面板、外部工具访问、权限到期回收),结合 handler 中的校验可做到"谁、何时、读哪些字段"的审计;代价是代理与 revoke 的生命周期管理成本(忘记 revoke 造成失效困惑、代理逃逸后原始对象仍可被内部持有),且撤销后的 TypeError 需在调用方做防御处理。通常与"原始对象永不外泄 + 只暴露代理"的封装原则配合。
本题考察 revocable 的语义与权限设计。核心是"一次性失效的访问凭证"模型及其与权限收回场景的匹配,生命周期管理是工程重点;能说明代理逃逸风险与只暴露代理的封装原则即展示设计深度。