shallowReadonly() 浅层只读代理

最后更新:2026-10-22

shallowReadonly() 浅层只读代理

shallowReadonly() 只让第一层属性只读,嵌套对象仍可修改。

分组响应式·进阶
类型API
作用域组件内
Vue 版本3.0+
SSR 支持支持

📝 语法

const cfg = shallowReadonly({ theme: 'dark', nested: {} })
cfg.theme = 'light'     // ❌ 被拦截
cfg.nested.x = 1        // ✅ 允许(嵌套未只读)

⚙️ 参数

target对象

返回值:浅层只读代理

▶ 示例

修改下面的代码,在预览区实时查看效果:

输出:

点「改顶层」主题不变(有警告);嵌套修改被放行。

💡 要点

⚠️ 注意 浅层只读不等于安全:嵌套数据仍可被改,别用它做数据保护。
ℹ️ 说明 少数场景需要:第一层常量 + 嵌套可变引用(如缓存容器)。
更多案例即将上线。

📚 相关教程

❓ 常见问题

Q 和 readonly 的区别?
A 只锁一层:嵌套对象读写照常,readonly 则递归锁全部层级。
Q 常见使用场景?
A 少见,通常出现在对性能敏感、又需要浅层防御的内部 API。
Q 能检测吗?
A isReadonly 返回 true,isProxy 也为 true。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏