//1
//Object.create(proto)
//Object.create(proto,descriptors)
//指定されたプロトタイプとプロパティを使用してオブジェクトを作成します
//パラメータ:
//proto: 新しく作成されたオブジェクトのプロトタイプ。null にすることもできます
//descriptors: 属性名を属性記述子にマップするオプションのオブジェクト
// proto から継承され、記述子のプロパティを持つ、新しく作成されたオブジェクトを返します。
//2
//Object.defineProperties(o,descriptors)
// オブジェクトの複数のプロパティを作成または構成します
//パラメータ:
//o: プロパティを作成または設定するオブジェクト
//descriptors: 属性名を属性記述子にマップするオブジェクト
// オブジェクト o
//3
//Object.defineProperty(o,name,desc)
// オブジェクトのプロパティを作成または設定します
//パラメータ:
//o: プロパティが作成または設定されるオブジェクト
//name: 作成または設定する属性の名前
//desc: 作成される新しいプロパティ、または既存のプロパティの変更を記述するプロパティ記述子オブジェクト
// オブジェクト o
//4
//Object.freeze(o)
//オブジェクトを不変として設定し、継承されたプロパティには影響しません
//パラメータ:
//o: 凍結するオブジェクト
// true|falseを返します
//5
//Object.getOwnPropertyDescriptor(o,name)
//パラメータ:
//o: オブジェクト
//name: クエリする属性名
//属性の特性をクエリします
// オブジェクトの指定されたプロパティのプロパティ記述子オブジェクトを返します。指定されたプロパティが存在しない場合は、unknown を返します。
/*
属性記述子は、オブジェクトの特性を記述する通常の JavaScript オブジェクトです。JavaScript 属性には 2 つのタイプがあります。データ属性には値と 3 つのプロパティがあります: enumerable、
アクセサ プロパティは書き込み可能で構成可能であり、ゲッター メソッドやセッター メソッド、および列挙可能性を備えています。
データ属性の記述子:
{
値: 任意の JavaScript 値、
書き込み可能: true|false、
列挙可能: true|false、
構成可能:true|false
}
アクセサー プロパティの記述子:
{
get: 関数または未定義: 属性値を置き換えます
set: 関数または未定義: 書き込み可能性を置き換えます
列挙可能:true|false,
構成可能:true|false
}
*/
//6
//Object.getOwnPropertyNames(o)
//非継承属性の名前を返します
//パラメータ:
//o: オブジェクト
// 列挙不可能なプロパティを含む、o のすべての非継承プロパティを含む名前を返します。 {列挙可能:false}
//7
//Object.getPrototypeOf(o)
//パラメータ:
//o: オブジェクト
// オブジェクトのプロトタイプを返します
//8
//Object.hasOwnProperty(propname);
//パラメータ:
//propname はオブジェクト
のプロパティ名を含む文字列です
//プロパティが継承されているかどうかを確認します
// true|falseを返します
//9
//Object.isExtensible(o);
//新しい属性をオブジェクトに追加できるかどうかを決定します
//パラメータ:
//o: スケーラビリティをチェックするオブジェクト
//Return は true として追加できます| false として追加できません
//説明: すべてのオブジェクトは、作成時に Object.preventExtensions(o) Object.seal(o) または Object.freeze(o);
//10
//Object.isFrozen(o)
//オブジェクトが不変かどうかを判断します
//パラメータ:
//o: チェックするオブジェクト
// o が凍結されて変化しない場合は true、それ以外の場合は false;
//object.isPrototypeOf(o)
// 現在のオブジェクトが別のオブジェクトのプロトタイプであるかどうかを判断します
//パラメータ:
//o: すべてのオブジェクト
//オブジェクトが o のプロトタイプである場合、それは true です。o がオブジェクトでない場合、またはオブジェクトが o のプロトタイプではない場合、それは false です。
//Object.isSealed(o)
//オブジェクトの属性を追加または削除できるかどうかを決定します
//パラメータ:
//o: チェックするオブジェクト
// o が閉じている場合は true、そうでない場合は false。
// 新しい (継承されていない) プロパティをオブジェクトに追加できず、既存の (継承されていない) プロパティを削除できない場合、オブジェクトは閉じられます。
//オブジェクトを閉じるために一般的に使用されるメソッドは、Object.seal(o) または Object.freeze(o)
//13
//object.keys(o)
//自由な列挙可能なプロパティ名を返します
//パラメータ:
//o: オブジェクト
//14
//Object.preventExtensions(o)
// オブジェクトへの新しい属性の追加を禁止します
//パラメータ:
// o: 設定する拡張可能なオブジェクト
//一度非拡張可能に設定すると、拡張可能に変更することはできません
console.log("======================================== ============)
//15
//object.propertyIsEnumerable(propname)
// for/in ループで特定の属性が表示されるかどうかを確認します
//パラメータ
//propname: オブジェクトの指定されたプロパティ名を含む文字列
// オブジェクトに propname という名前の非継承プロパティがあり、そのプロパティが列挙可能な場合、true を返します。
//16
//Object.seal(o)
//オブジェクトのプロパティの追加または削除を禁止します
//パラメータ
//o: 閉じるオブジェクト
//閉じたパラメータ オブジェクト o
//17
//Object.toLocaleString()
// オブジェクトのローカライズされた文字列識別子を返します
// Object クラスによって提供されるデフォルトの toLocaleString() メソッドは、単純に toString() メソッドを呼び出します。
//ただし、他のクラス (配列、日付、数値など) はそれぞれこのメソッドの独自のバージョンを定義していることに注意してください。ローカライズされた文字列変換を実行するために使用されます。独自のクラスを定義するときは、このメソッドをオーバーライドする必要がある場合もあります。
//18
//object.toString()
//オブジェクトの文字列表現を定義します
//JavaScript プログラムでは、一般的に toString() メソッドは頻繁には呼び出されません。通常、このメソッドはオブジェクト内で定義されており、オブジェクトを文字列に変換する必要がある場合、システムが自動的にこのメソッドを呼び出します。
//19
//Object.valueOf()
//指定されたオブジェクトの元の値
// 指定されたオブジェクトに関連付けられた元の値が存在する場合は、その値を返します。変更されたオブジェクトに関連付けられた値がない場合は、オブジェクト自体を返します