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オブジェクト

戻り値:浅い読み取り専用プロキシ

▶ 例

以下のコードを編集して結果を確認しましょう:

出力:

The top-level write is blocked with a warning; the nested write goes through.

💡 ポイント

⚠️ 注意 浅い読み取り専用は安全対策ではありません。ネストしたデータは書き換え可能なので、データ保護には使わないでください。
ℹ️ 補足 使われる場面は少数です。第一階層は定数、ネストした参照は可変(キャッシュコンテナなど)というケース向けです。
関連ケースは近日公開予定。

📚 関連チュートリアル

❓ よくある質問

Q readonly との違いは?
A 1 階層だけをロックします。ネストしたオブジェクトは読み書き可能なままですが、readonly は全階層を再帰的にロックします。
Q よくある使用場面は?
A まれです。主に、性能を気にしつつ浅い防御が必要な内部 API で使われます。
Q 検出できますか?
A isReadonly も isProxy も true を返します。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%