「オブジェクト」の版間の差分

提供: Node.js/JavaScript入門
移動: 案内検索
(ページの作成:「名前を付けられた値を集めたものをオブジェクト(Object)と呼びます。個々のデータ値をそのオブジェクトのプロパティを呼...」)
 
 
行50: 行50:
 
<syntaxhighlight lang="javascript">
 
<syntaxhighlight lang="javascript">
 
var data = { "foo" : 123 };
 
var data = { "foo" : 123 };
 +
</syntaxhighlight>
 +
 +
=== プロパティの短縮記法 ===
 +
ECMAScript6 の Object initializer の機能が V8 で実装されます。
 +
<syntaxhighlight lang="javascript">
 +
var x = 1, y = 2, z = 3;
 +
var obj = { x, y, z };
 +
</syntaxhighlight>
 +
 +
従来では、以下の記法が必要でした。
 +
<syntaxhighlight lang="javascript">
 +
var x = 1, y = 2, z = 3;
 +
var obj = { x:x, y:y, z:z };
 
</syntaxhighlight>
 
</syntaxhighlight>
  

2014年10月5日 (日) 16:26時点における最新版

名前を付けられた値を集めたものをオブジェクト(Object)と呼びます。個々のデータ値をそのオブジェクトのプロパティを呼びます。

読み方

オブジェクト
おぶじぇくと
Object
おぶじぇくと

概要

JavaScriptを書く上で、オブジェクトは重要な存在です。 JavaScript は、すべてオブジェクトです。 オブジェクトの実装は、HashMap(連想配列)です。

オブジェクトの生成

オブジェクトの生成には、コンストラクタ関数が使用されます。

var obj = new Ojbect();
var now = new Date();

生成したオブジェクトには、好きなプロパティを設定できます。

var obj = new Ojbect();
obj.x = 1;
obj.y = 2;

オブジェクトリテラル

オブジェクトリテラルは、以下の形式で定義します。

{プロパティ1:, プロパティ2:}

オブジェクトのプロパティをあらかじめ定義できます。オブジェクトリテラルは、オブジェクトイニシャライザとも呼ばれます。

以下のコードは、プロパティを持たないオブジェクトを作成します。

var obj = {};

プロパティを2つ持つオブジェクトを生成します。

var data = { x:1, y:2 };

オブジェクトリテラルは、入れ子にできます。

var data = { x:{x:1,y:2,z:3} , y:{x:1,y:2,z:3} };

オブジェクトリテラルのプロパティ名には、文字列も使用できます。

var data = { "foo" : 123 };

プロパティの短縮記法

ECMAScript6 の Object initializer の機能が V8 で実装されます。

var x = 1, y = 2, z = 3;
var obj = { x, y, z };

従来では、以下の記法が必要でした。

var x = 1, y = 2, z = 3;
var obj = { x:x, y:y, z:z };

プロパティを参照する方法

プロパティの参照は、名前を指定して参照する方法とループを回す方法があります。

プロパティの単純な参照

プロパティの参照には、.でプロパティを指定する方法と添字(連想配列)でアクセスする方法があります。

var obj = { x:1, y:2, z:3 };
console.log ( obj.x );
console.log ( obj["x"] );

オブジェクトとfor-in

/*
 * obj_for_in1.js
 * Copyright (C) 2014 kaoru <kaoru@bsd>
 */
var obj = { x:1, y:2, z:3 };
for (var key in obj) {
        console.log(obj[key]);
}
$ node obj_for_in1.js
1
2
3

オブジェクトとfor-each-in

for-each-inは、JavaScript 1.7で追加されました。

/*
 * obj_for_each1.js
 * Copyright (C) 2014 kaoru <kaoru@bsd>
 */
var obj = { x:1, y:2, z:3 };
for each (var value in obj) {
        console.log(value);
}

node v0.10.30,v0.10.31では、動作しません。

プロパティの存在を確認する

オブジェクトのプロパティを存在するか、確認するには、 in を使用します。

/*
 * object_exist_property.js
 * Copyright (C) 2014 kaoru <kaoru@bsd>
 */
var obj = { x:17 };
 
console.log ( "x" in obj );      // 存在する true
console.log ( "y" in obj );      // 存在しない false
$ node object_exist_property.js
true
false

オブジェクトのプロパティの削除

オブジェクトのプロパティを削除するには、 delete を使用します。

delete obj.target;

実際の例を示します。

/*
 * object_delete_property.js
 * Copyright (C) 2014 kaoru <kaoru@bsd>
 */
var obj = { x:17 };
 
console.log ( "x" in obj );      // 存在する true
delete obj.x;			// プロパティ x を削除する
console.log ( "x" in obj );      // 存在しない false
$ node object_delete_property.js
true
false

関連項目