Movatterモバイル変換


[0]ホーム

URL:


  1. 開発者向けのウェブ技術
  2. JavaScript
  3. JavaScript リファレンス
  4. 標準組み込みオブジェクト
  5. Object
  6. isFrozen()

このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docsコミュニティーについてもっと知り、仲間になるにはこちらから。

View in EnglishAlways switch to English

Object.isFrozen()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨2015年7月⁩.

Object.isFrozen() はオブジェクトが凍結されているかどうかを判定します。

試してみましょう

const object = {  property1: 42,};console.log(Object.isFrozen(object));// 予想される結果: falseObject.freeze(object);console.log(Object.isFrozen(object));// 予想される結果: true

構文

js
Object.isFrozen(obj)

引数

obj

確認したいオブジェクトです。

返値

論理値で、与えられたオブジェクトが凍結されているかどうかを示します。

解説

オブジェクトが凍結状態 (frozen) とは、オブジェクトが拡張可能ではなく、すべてのプロパティは構成不可であり、そしてすべてのデータプロパティ(これはゲッターやセッターコンポーネントを持つアクセサープロパティ以外のものを指します)が書き込み不可である場合です。

Object.isFrozen の使用

js
// 新しいオブジェクトは拡張可能であるので、凍結されていませんObject.isFrozen({}); // false// 拡張可能ではない空のオブジェクトは、他に何もしなくても// 凍結されていますconst vacuouslyFrozen = Object.preventExtensions({});Object.isFrozen(vacuouslyFrozen); // true// プロパティをひとつ持つ新しいオブジェクトも拡張可能であり、// それゆえ凍結されていませんconst oneProp = { p: 42 };Object.isFrozen(oneProp); // false// オブジェクトを拡張不可にしても、それは凍結されません// なぜなら、まだプロパティが設定変更可能// (かつ書き込み可能) であるからですObject.preventExtensions(oneProp);Object.isFrozen(oneProp); // false// ...しかしプロパティを削除すると、そのオブジェクトは// 他に何もしなくても凍結されますdelete oneProp.p;Object.isFrozen(oneProp); // true// 書き込み不可であるが設定変更可能なプロパティを持つ、// 拡張不可のオブジェクトは、凍結されていませんconst nonWritable = { e: "plep" };Object.preventExtensions(nonWritable);Object.defineProperty(nonWritable, "e", {  writable: false,}); // 書き込み不可にしますObject.isFrozen(nonWritable); // false// プロパティを構成不可にすると、// オブジェクトは凍結されますObject.defineProperty(nonWritable, "e", {  configurable: false,}); // 構成不可にしますObject.isFrozen(nonWritable); // true// 構成不可であるが書き込み可能なプロパティを持つ、// 拡張不可のオブジェクトは、やはり凍結されていませんconst nonConfigurable = { release: "the kraken!" };Object.preventExtensions(nonConfigurable);Object.defineProperty(nonConfigurable, "release", {  configurable: false,});Object.isFrozen(nonConfigurable); // false// プロパティを書き込み不可にすると、オブジェクトは// 凍結されますObject.defineProperty(nonConfigurable, "release", {  writable: false,});Object.isFrozen(nonConfigurable); // true// 設定変更可能なアクセサープロパティを持つ拡張不可の// オブジェクトは、凍結されていませんconst accessor = {  get food() {    return "yum";  },};Object.preventExtensions(accessor);Object.isFrozen(accessor); // false// プロパティを構成不可にすると、オブジェクトは凍結されますObject.defineProperty(accessor, "food", {  configurable: false,});Object.isFrozen(accessor); // true// なお、オブジェクトを凍結するもっとも簡単な方法は、// Object.freeze を呼び出すことですconst frozen = { 1: 81 };Object.isFrozen(frozen); // falseObject.freeze(frozen);Object.isFrozen(frozen); // true// 定義によると、凍結されたオブジェクトは拡張不可ですObject.isExtensible(frozen); // false// また、凍結されたオブジェクトは封印されていますObject.isSealed(frozen); // true

オブジェクト以外の型強制

ES5 では、このメソッドの引数がオブジェクトではない場合(プリミティブの場合)、TypeError が発生します。 ES2015 以降では、オブジェクトでない引数は、それが凍結された通常のオブジェクトであるかのように扱われ、単にtrue を返します。

js
Object.isFrozen(1);// TypeError: 1 is not an object (ES5 code)Object.isFrozen(1);// true                          (ES2015 code)

仕様書

Specification
ECMAScript® 2026 Language Specification
# sec-object.isfrozen

ブラウザーの互換性

関連情報

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp