連想配列・Object【オブジェクト】オブジェクト
目次: メモ コンストラクタ プロパティ 一覧 メソッド 一覧 オブジェクトリテラル プロパティの変更・追加・削除 防止 例 関連
メモ
- プロパティのコレクション (波括弧:{ } を使用)
- 連想配列として利用可能 (通常の配列は角括弧:[ ] )
- 記述方法:オブジェクトリテラル
- プロパティ アクセス:(下記 例 を参照)
- object . PropName
- object [ PropNameString ]
- 標準組み込みオブジェクトの判定
(尚、[ @@toStringTag ]【タグ】プロパティ を定義すれば ユーザ定義オブジェクトも判定可能 例 )- typeof【型判定 演算子】
- 全て object
- リテラル型と該当オブジェクトは別 (例:String型とStringオブジェクトは別)
- Object.prototype.toString【文字列変換】を使用 (下記 例 を参照)
- リテラル型と該当オブジェクトは、同一オブジェクトと判定 (例:String型とStringオブジェクトは、Stringオブジェクトと判定)
- 呼出しにはFunction【関数】オブジェクトのcall【関数呼出し (可変引数)】 を使用
- typeof【型判定 演算子】
- ユーザ定義オブジェクトの判定
- instanceof【コンストラクタ関数判定 演算子】
- toString【文字列変換】 ([ @@toStringTag ]【タグ】プロパティ 定義)
- クラス定義による継承可能
- その他 配列・コレクション
- 関連オブジェクト比較
コンストラクタ
構文 | 説明 |
---|---|
オブジェクトリテラル new Object ( [ value ] ) | コンストラクタ |
プロパティ 一覧
プロパティ | 説明 | |
---|---|---|
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. | fromEntries ( iterable ) | オブジェクト生成 (イテラブル) |
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 : Expression 123 : "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:処理
プロパティの変更・追加・削除 防止
プロパティ操作 | 変更 | 追加 | 削除 | 判定 |
---|---|---|---|---|
seal【封印】 | ○ | × | × | isSealed【封印 判定】 |
preventExtensions【拡張(プロパティ追加)不可 設定】 | ○ | × | ○ | isExtensible【拡張(プロパティ追加)可否】 |
freeze【プロパティ凍結】 | × | × | × | isFrozen【プロパティ凍結 判定】 |
例 (プロパティ)
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]
関連
- ECMAScript 5.1 (英語)
- ECMAScript 2015 (6) (英語)
- ECMAScript 2016 (7) (英語)