— y2sunlight 2021-03-30
全てのオブジェクトの共通的な性質/機能を提供する。
Objectメンバ(主要なもの) ※その他プロパティ/プロトタイプ/変更可否に関するものもある。
メンバ | 概要 |
constructor | インスタンス化で使用されたコンストラクタ |
toString() | インスタンスの文字列表現の取得 |
toLocaleString() | インスタンスの文字列表現の取得(地域依存) |
valueOf() | インスタンスの基本型表現の取得(基本型を取得) |
create() ※ | 与えられたオブジェクトから新しいインスタンスを作る |
assign() *2015 ※ | 与えられたオブジェクトのコピー |
is() *2015 ※ | 与えられたオブジェクトの比較 |
※ 静的メソッド
Object.create(proto, props); // 新しいオブジェクトを作る
// 方法1 var obj = {name:'taro', age:17}; // 方法2 var obj = new Object(); obj.name = 'taro'; obj.age = 17; // 方法3 var obj = Object.create(Object.prototype, { name: {value:'taro', writable:true, configurable:true, enumerable:true}, age: {value:17, writable:true, configurable:true, enumerable:true} });※詳しくはMDN参照
Object.assign(target, source1, …); // オブジェクトのマージ
Student1 = {name:'taro', age:17}; Student2 = {name:'hanako', tel:'090-1234-56789'}; Object.assign(Student1,Student2); console.log(Student1); // 結果 {name:'hanako', age:17, tel:'090-1234-56789'} console.log(Student2); // 結果 {name:'hanako', tel:'090-1234-56789'} // マージせずに新しいオブジェクトを作る時 Object.assign({}, Student1); // taroのみコピー Object.assign({}, Student1, Student1, Student2); // taroをコピーしてhanakoをマージ
《変更可否を操作する静的メソッド》
設定 | 確認 | |
プロパティの追加禁止 | preventExtensions(obj); | isExtensible(obj) |
プロパティの追加/削除禁止 | seal(obj) | isSealed(obj) |
プロパティの追加/削除/変更禁止 (不変オブジェクト) | freeze(obj) | isFrozen(obj) |
※Strictモードを有効にしないと変更しようとしても例外発生しない。有効にする事を推奨