連想配列・Object【オブジェクト】オブジェクト

目次: メモ コンストラクタ プロパティ メソッド オブジェクトリテラル プロパティの変更・追加・削除 防止 関連

メモ

コンストラクタ

プロパティ

プロパティ説明
Object.prototype.__proto__ 内部プロトタイプ
Object.prototype.constructor コンストラクタ定義
Object.prototypeプロトタイプ
参考説明
Object.prototype[ @@toStringTag ] タグ (ユーザ定義の判別可能)
toString【文字列変換】で使用

メソッド

メソッド説明
Object. assign ( target, ...sources ) プロパティ コピー
Object.create ( O [, Properties] ) 作成
Object.defineProperties ( O, Properties ) プロパティ定義 (複数)
Object.defineProperty ( O, P, Attributes ) プロパティ定義 (単一)
Object.entries ( O ) プロパティ組配列 取得
Object. freeze ( O ) プロパティ凍結
Object.getOwnPropertyDescriptor ( O, P ) プロパティディスクリプタ 取得
Object. getOwnPropertyDescriptors ( O ) 全プロパティディスクリプタ 取得
Object.getOwnPropertyNames ( O ) プロパティ名 取得
Object. getOwnPropertySymbols ( O ) シンボル プロパティ 取得
Object.getPrototypeOf ( O ) プロトタイプ 取得
Object.prototype. hasOwnProperty ( V ) プロパティ有無
Object. is ( value1, value2 ) 同一判定
Object.isExtensible ( O ) 拡張(プロパティ追加)可否
Object.isFrozen ( O ) プロパティ凍結 判定
Object.prototype. isPrototypeOf ( V ) プロトタイプチェーン存在有無
Object. isSealed ( O ) 封印 判定
Object. keys (O) プロパティ名 取得 (列挙可能のみ)
Object.preventExtensions (O) 拡張(プロパティ追加)不可 設定
Object.prototype. propertyIsEnumerable (V) 列挙可能プロパティ 判定
Object. seal ( O ) 封印
Object. setPrototypeOf ( O, proto ) プロトタイプ設定
Object.prototype.toLocaleString ()
toLocaleString ( [ reserved1 [ , reserved2 ] ] )
文字列変換 (ロケール)
Object.prototype.toString () 文字列変換 ([ @@toStringTag ] プロパティ 参照)
Object.prototype.unwatch ( prop ) 代入監視終了
Object.prototype. valueOf ()プリミティブ値 変換
Object.values ( O ) プロパティ値配列 取得
Object.prototype. watch ( prop, handler ) 代入監視開始

オブジェクトリテラル

{ [ prop1 [, prop2 [, … propN] ] [,] ] }
  • prop1 ~ propN:プロパティ定義
    詳細例:オブジェクトリテラル・new Object【コンストラクタ】の例
    プロパティ定義説明
    CoverInitializedName var xyz = 'xyz';
    var obj = { xyz };
    CoverInitializedName:変数名
    プロパティ名:変数名
    プロパティ値:変数値
    PropName : Expression ・xyz : "xyz"
    ・func : function (~) {~}
    PropName:プロパティ名 (文字列に変換)
    Expression:プロパティ値 (式)
    NumericLiteral:数値 (文字列に変換)

    [PropName]:文字列で記述・式も可能
    "PropName" : Expression"xyz" : "xyz"
    NumericLiteral : Expression123 : "xyz"
    [PropName] : Expression ・[xyz] : "xyz"
    ・["xy" + "z"] : "xyz"
    PropName ( Parameters ) { FuncBody } func (~) {~}関数定義の省略形
    Parameters:パラメータ
    FuncBody:処理
    GeneratorMethod ジェネレータ
    get PropName () { FuncBody } get xValue () { return this.x; } ゲッター
    FuncBody:処理
    set PropName ( Parameters ) { FuncBody } set xValue (value) { this.x = value; } セッター
    Parameters:パラメータ
    FuncBody:処理

プロパティの変更・追加・削除 防止

var obj = { x:1, y:2, z:3 };
console.log(obj.x, obj.y, obj.z);           // 出力:1 2 3
console.log(obj["x"], obj["y"], obj["z"]);  // 出力:1 2 3
var toString = Object.prototype.toString;
var global = null;
console.log(typeof global);         // 出力:object
console.log(toString.call(global)); // 出力:[object Null]

global = undefined;
console.log(typeof global);         // 出力:undefined
console.log(toString.call(global)); // 出力:[object Undefined]

global = NaN;
console.log(typeof global);         // 出力:number
console.log(toString.call(global)); // 出力:[object Number]

global = Infinity;
console.log(typeof global);         // 出力:number
console.log(toString.call(global)); // 出力:[object Number]

var bool1 = true;
var bool2 = new Boolean(true);
console.log(typeof bool1);          // 出力:boolean
console.log(typeof bool2);          // 出力:object
console.log(toString.call(bool1));  // 出力:[object Boolean]
console.log(toString.call(bool2));  // 出力:[object Boolean]

var array1 = [ 1, 2, 3];
var array2 = new Array([ 1, 2, 3]);
console.log(typeof array1);         // 出力:object
console.log(typeof array2);         // 出力:object
console.log(toString.call(array1)); // 出力:[object Array]
console.log(toString.call(array2)); // 出力:[object Array]

var num1 = 123;
var num2 = new Number(123);
console.log(typeof num1);           // 出力:number
console.log(typeof num2);           // 出力:object
console.log(toString.call(num1));   // 出力:[object Number]
console.log(toString.call(num2));   // 出力:[object Number]

var obj1 = { x:1, y:2, z:3 };
var obj2 = new Object( { x:1, y:2, z:3 } );
console.log(typeof obj1);           // 出力:object
console.log(typeof obj2);           // 出力:object
console.log(toString.call(obj1));   // 出力:[object Object]
console.log(toString.call(obj2));   // 出力:[object Object]

var str1 = "string";
var str2 = new String("string");
console.log(typeof str1);           // 出力:string
console.log(typeof str2);           // 出力:object
console.log(toString.call(str1));   // 出力:[object String]
console.log(toString.call(str2));   // 出力:[object String]

var myObj = new Object();
console.log(toString.call(myObj));   // 出力:[object Object]
myObj[Symbol.toStringTag] = "MyObject";
console.log(toString.call(myObj));   // 出力:[object MyObject]