文書の過去の版を表示しています。
— y2sunlight 2021-03-30
全てのオブジェクトの共通的な性質/機能を提供する。
TODO:図
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モードを有効にしないと変更しようとしても例外発生しない。有効にする事を推奨