JavaScriptでのオブジェクト作成方法
JavaScriptではオブジェクトを作成する方法が複数あり、それぞれ用途や挙動が異なります。このページでは、以下の3つの方法について詳しく解説します。
new Objectを使用したオブジェクト作成
new Object()
は、JavaScriptでオブジェクトを作成するための最も基本的な方法です。この構文では、Object
コンストラクタ関数を使用してオブジェクトを作成します。
構文
let obj = new Object([value]);
ここで、value
はオプションで、プリミティブ型(数値、文字列、ブール値など)や他のオブジェクトを指定できます。
例
// 空のオブジェクトを作成
let obj1 = new Object();
console.log(obj1); // {}
// 文字列からオブジェクトを作成
let obj2 = new Object("Hello");
console.log(obj2); // [String: 'Hello']
// 数値からオブジェクトを作成
let obj3 = new Object(42);
console.log(obj3); // [Number: 42]
数学的表現
new Object(value)
は、与えられたvalue
をオブジェクトとしてラップする操作とみなせます。例えば、文字列 “Hello” をラップすると以下のように表現できます:
\[ \text{Object}(x) = \begin{cases} x & \text{if } x \text{ is already an object,} \\ \text{Wrap}(x) & \text{otherwise.} \end{cases} \]
リテラル表記によるオブジェクト作成
リテラル表記は、JavaScriptでオブジェクトを作成する最も一般的で簡潔な方法です。中括弧 {}
を使用して直接オブジェクトを記述します。
構文
let obj = {
key1: value1,
key2: value2,
...
};
例
// シンプルなオブジェクト
let person = {
name: "Alice",
age: 25,
greet: function() {
console.log("Hello!");
}
};
console.log(person.name); // Alice
person.greet(); // Hello!
// ネストしたオブジェクト
let nestedObj = {
outer: {
inner: {
value: 42
}
}
};
console.log(nestedObj.outer.inner.value); // 42
数学的表現
リテラル表記で作成されたオブジェクトは、キーと値のペアの集合として以下のように表されます:
\[ O = \{ k_1: v_1, k_2: v_2, \dots, k_n: v_n \} \]
ここで、\( k_i \) はキー(文字列)、\( v_i \) は値(任意のデータ型)です。
Object.createを使用したオブジェクト作成
Object.create
は、指定したプロトタイプを持つ新しいオブジェクトを作成するための方法です。この方法は、プロトタイプチェーンを利用したオブジェクトの作成に便利です。
構文
let obj = Object.create(prototype[, properties]);
ここで、prototype
は新しいオブジェクトのプロトタイプとして使用されるオブジェクトで、properties
はオプションで、新しいオブジェクトのプロパティを定義するディスクリプタです。
例
// プロトタイプを指定してオブジェクトを作成
let prototypeObj = { greet: function() { console.log("Hello from prototype!"); } };
let newObj = Object.create(prototypeObj);
newObj.greet(); // Hello from prototype!
// プロパティを指定
let objWithProps = Object.create(Object.prototype, {
name: { value: "Alice", writable: true, enumerable: true, configurable: true }
});
console.log(objWithProps.name); // Alice
数学的表現
この操作は、数学的には以下のように表現できます:
\[ O = \text{Create}(\text{Prototype}, \text{Properties}) \]
ここで、\(\text{Prototype}\)は新しいオブジェクトのプロトタイプを表し、\(\text{Properties}\)は追加されるプロパティの集合です。
注意点
プロトタイプチェーンが設定されるため、作成されたオブジェクトはプロトタイプのプロパティやメソッドにアクセスできます。ただし、それらをオブジェクト自身が持つわけではありません。
まとめ
JavaScriptでオブジェクトを作成する方法はさまざまですが、それぞれに特徴があります。
new Object()
: 基本的なオブジェクト作成。- リテラル表記: シンプルで一般的な方法。
Object.create
: プロトタイプを指定した高度なオブジェクト作成。
用途に応じて最適な方法を選びましょう。