Object
Object は JavaScript のオブジェクト操作の基盤となるビルトインです。assign(), create(), freeze(), keys(), values(), entries() 等のメソッドを提供します。
概要
Object は JavaScript のオブジェクト操作の基盤となるビルトインです。assign(), create(), freeze(), keys(), values(), entries() 等のメソッドを提供します。
対応ブラウザ
| 機能 | デスクトップ | モバイル | ||||
|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Safari | Chrome Android | Safari iOS | |
| 1 | 12 | 1 | 1 | 18 | 1 | |
| Object() コンストラクターは、入力されたものをオブジェクトに変換します。その動作は入力したものの型によって異なります。 | 1 | 12 | 1 | 1 | 18 | 1 |
| Object.assign() は静的メソッドで、すべてのObject/propertyIsEnumerableなObject/hasOwnの値を、 1 つ以上のコピー元オブジェクトからコピー先オブジェクトにコピーするために使用されます。変更されたコピー先オブジェクトを返します。 | 45 | 12 | 34 | 9 | 45 | 9 |
| constructor は Object インスタンスのデータプロパティで、インスタンスオブジェクトを生成したコンストラクター関数への参照を返します。なお、このプロパティの値は関数そのものへの参照であり、関数名を含んだ文字列ではありません。 | 1 | 12 | 1 | 1 | 18 | 1 |
| Object.create() は静的メソッドで、既存のオブジェクトを新しく生成されるオブジェクトのプロトタイプとして使用して、新しいオブジェクトを生成します。 | 5 | 12 | 4 | 5 | 18 | 5 |
| Object.defineProperties() メソッドは、オブジェクトに直接新しいプロパティを定義し、あるいは既存のプロパティを変更して、そのオブジェクトを返します。 | 5 | 12 | 4 | 5 | 18 | 5 |
| Object.defineProperty() は静的メソッドで、あるオブジェクトに新しいプロパティを直接定義したり、オブジェクトの既存のプロパティを変更したりして、そのオブジェクトを返します。 | 5 | 12 | 4 | 5.1 | 18 | 6 |
| Object.entries() は静的メソッドで、与えられたオブジェクトが所有する、文字列をキーとした列挙可能なプロパティのキーと値の組の配列を返します。 | 54 | 14 | 47 | 10.1 | 54 | 10.3 |
| Object.freeze() は静的メソッドで、オブジェクトを凍結します。オブジェクトを凍結すると、拡張ができなくなり、既存のプロパティは書き込みも構成も不可能になります。新しいプロパティを追加したり、既存のプロパティを削除したり、列挙可能性、構成可能性、書き込み可能性、値を変更したり、オブジェクトのプロトタイプを再代入したりすることはできません。 freeze() は、渡されたオブジェクトと同じものを返します。 | 6 | 12 | 4 | 5.1 | 18 | 5 |
| Object.fromEntries() は静的メソッドで、キーと値の組み合わせのリストをオブジェクトに変換します。 | 73 | 79 | 63 | 12.1 | 73 | 12.2 |
| Object.getOwnPropertyDescriptor() は静的メソッドで、与えられたオブジェクトの特定のプロパティ (すなわち、あるオブジェクトの直接の表現であり、オブジェクトのプロトタイプチェーン内のものではない) の構成を記述したオブジェクトを返します。返されるオブジェクトは変更可能ですが、変更しても元のプロパティの構成には影響を与えません。 | 5 | 12 | 4 | 5 | 18 | 5 |
| Object.getOwnPropertyDescriptors() は静的メソッドで、指定したオブジェクトのすべてのプロパティ記述子を返します。 | 54 | 15 | 50 | 10 | 54 | 10 |
| Object.getOwnPropertyNames() は静的メソッドで、与えられたオブジェクトで発見されたすべての直接のプロパティを含む配列を(シンボルを使用したものを除き、列挙不可能なプロパティを含んで)返します。 | 5 | 12 | 4 | 5 | 18 | 5 |
| Object.getOwnPropertySymbols() は静的メソッドで、与えられたオブジェクト上で直接見つかるシンボルプロパティすべての配列を返します。 | 38 | 12 | 36 | 9 | 38 | 9 |
| Object.getPrototypeOf() メソッドは、指定されたオブジェクトのプロトタイプ (つまり、内部プロパティ [[Prototype]] の値) を返します。 | 5 | 12 | 3.5 | 5 | 18 | 5 |
| hasOwnProperty() は Object インスタンスのメソッドで、オブジェクト自身が(継承されていない)指定されたプロパティを持っているかどうかを示す論理値を返します。 | 1 | 12 | 1 | 3 | 18 | 1 |
| Object.is() は静的メソッドで、 2 つの値が同一値であるかどうかを判定します。 | 19 | 12 | 22 | 9 | 25 | 9 |
| Object.isExtensible() メソッドは、オブジェクトが拡張可能であるか(新しいプロパティを追加することができるかどうか)を判定します。 | 6 | 12 | 4 | 5.1 | 18 | 5 |
| Object.isFrozen() はオブジェクトがObject/freezeかどうかを判定します。 | 6 | 12 | 4 | 5.1 | 18 | 5 |
| isPrototypeOf() は Object インスタンスのメソッドで、オブジェクトが別のオブジェクトのプロトタイプチェーンに存在するかどうかを判定します。 | 1 | 12 | 1 | 3 | 18 | 1 |
| Object.isSealed() メソッドは、オブジェクトが封印されているかどうかを判定します。 | 6 | 12 | 4 | 5.1 | 18 | 5 |
| Object.keys() は静的メソッドで、指定されたオブジェクトが持つプロパティの名前の配列を、通常のループで取得するのと同じ順序で返します。 | 5 | 12 | 4 | 5 | 18 | 5 |
| Object.preventExtensions() は静的メソッドで、すでにプロパティが追加されたオブジェクトで、新しいプロパティを抑制します (すなわち、オブジェクトのさらなる拡張を抑制します)。また、このオブジェクトのプロトタイプが再代入されることを防ぎます。 | 6 | 12 | 4 | 5.1 | 18 | 5 |
Object.preventExtensions.ES2015 behavior 非オブジェクト引数に対する ES2015 の動作 | 44 | 12 | 35 | 9 | 44 | 9 |
| propertyIsEnumerable() メソッドは、指定されたプロパティが列挙可能で、かつオブジェクト自身のプロパティであるかどうかを示す論理値を返します。 | 1 | 12 | 1 | 3 | 18 | 1 |
| Object.seal() は静的メソッドで、オブジェクトを封印します。オブジェクトを封印すると、拡張を抑止し、既存のすべてのプロパティを構成不可にします。封印されたオブジェクトは、固定されたプロパティ一式を持ちます。新しいプロパティを追加したり、既存のプロパティを除去したり、列挙可能性や構成可能性を変更したり、プロトタイプを再割り当てしたりすることはできません。既存のプロパティの値は、書き込み可能である限り変更することができます。 seal() は渡したオブジェクトを返します。 | 6 | 12 | 4 | 5.1 | 18 | 5 |
| Object.setPrototypeOf() は静的メソッドで、指定されたオブジェクトのプロトタイプ(つまり、内部の [[Prototype]] プロパティ)を、別のオブジェクトまたは null に設定します。 | 34 | 12 | 31 | 9 | 34 | 9 |
| toString() は Object インスタンスのオブジェクトで、このオブジェクトを表す文字列を返します。このメソッドは、独自の型変換ロジックのために派生オブジェクトがオーバーライドするためのものです。 | 1 | 12 | 1 | 1 | 18 | 1 |
| valueOf() は Object インスタンスのメソッドで、 this 値をオブジェクトに変換します。このメソッドは、派生オブジェクトでは独自の型変換ロジックのためにオーバーライドされるためのものです。 | 1 | 12 | 1 | 1 | 18 | 1 |
| Object.values() は静的メソッドで、指定されたオブジェクトが持つ列挙可能なプロパティの文字列キーのプロパティ値を配列で返します。 | 54 | 14 | 47 | 10.1 | 54 | 10.3 |
| その他 | ||||||
javascript.grammar.shorthand_object_literals オブジェクトリテラルの省略表記 | 43 | 12 | 33 | 9 | 43 | 9 |
| オブジェクト初期化子 (object initializer) は、オブジェクトのプロパティ名と関連する値の 0 個以上のペアを中括弧 ({}) で囲んだカンマ区切りのリストです。オブジェクトは Object.create() や new 演算子でコンストラクター関数を呼び出して使用することもできます。 | 1 | 12 | 1 | 1 | 18 | 1 |
| 演算子 | ||||||
computed property names 計算されたプロパティ名 | 47 | 12 | 34 | 8 | 47 | 8 |
shorthand method names 短縮メソッド名 | 47 | 12 | 34 | 9 | 47 | 9 |
shorthand property names 省略形のプロパティ名 | 47 | 12 | 33 | 9 | 47 | 9 |
spread properties スプレッドのプロパティ | 60 | 79 | 55 | 11.1 | 60 | 11.3 |
| その他 | ||||||
| オプショナルチェーン演算子 (?.) (optional chaining) は、オブジェクトのプロパティにアクセスしたり、関数を呼び出したりします。この演算子を使用してアクセスするオブジェクトまたは呼び出される関数が undefined または null の場合、エラーが発生することなく、式が途中で終了し、undefined と評価されます。 | 80 | 80 | 74 | 13.1 | 80 | 13.4 |
- Safari 5でもサポートされていますが、DOMオブジェクトではサポートされていません。
- iOS 4.2のSafariでもサポートされていますが、DOMオブジェクトではサポートされていません。
基本構文
// Merge
const merged = Object.assign({}, { a: 1 }, { b: 2 });
// Freeze
const frozen = Object.freeze({ x: 1 });
// frozen.x = 2; // Throws an error in strict mode
// Define a property
Object.defineProperty(obj, 'prop', {
value: 42,
writable: false
}); ライブデモ
実務での使いどころ
-
Object の活用
Object の基本機能。assign, create, freeze, keys 等のオブジェクト操作メソッドを提供。
注意点
- 特になし。すべての主要ブラウザで安定して動作する。
アクセシビリティ
- JavaScript による動的更新時は、aria-live リージョンで変更をスクリーンリーダーに通知する。
参考リンク
Powered by web-features