JavaScriptのオブジェクトリテラルとコンストラクターの違いをわかりやすく解説
オブジェクトリテラルとnew Object()は同じことをしている
JavaScriptでは、new Object()という記述方法と、オブジェクトリテラル({})を使う記述方法のどちらでも、まったく同じ結果が得られます。どちらも新しいオブジェクトを初期化するための構文だからです。
ただし、オブジェクトにプロパティを追加していく段階になると、記述方法によってコードの見た目や扱いやすさに多少の違いが生じてきます。
オブジェクトリテラルによる初期化例
let a = {
name: 'Ayush'
}上記の初期化は、以下のいずれかの書き方と完全に同等です。
new Object()を使った同等の書き方
let a = new Object(); a.name = 'Ayush'
または、空のオブジェクトリテラルから始めて後からプロパティを追加することもできます。
let a = {}
a.name = 'Ayush'継承クラスの場合は話が変わる
ただし、この等価性は継承されたクラスにはそのまま当てはまりません。カスタムコンストラクターを持つクラスでは、new ClassName()の呼び出しが、前述のような標準的なオブジェクト生成フローとは異なる処理を行うように設計されている可能性があります。
例えば、コンストラクター内で引数を受け取って内部状態を初期化したり、特定の条件下で既存のインスタンスを返す(シングルトン的な振る舞い)ようにしたりすることも、実装次第で可能です。
つまり、コンストラクターがどのように振る舞うかは、完全にプログラマーの裁量に委ねられているのです。
まとめ
シンプルなオブジェクトを作成するだけであれば、簡潔で可読性の高いオブジェクトリテラル({})を使うのが一般的なベストプラクティスとされています。new Object()も機能的には同じですが、コードが冗長になりがちなので、特別な理由がない限りリテラル表記を選ぶとよいでしょう。
-
JavaScriptのRegExp(正規表現)オブジェクトとは?基本の使い方をわかりやすく解説
RegExp(正規表現)オブジェクトは、テキストに対してパターンマッチングを行い、目的の文字列部分を検索・抽出するために使用されます。JavaScriptでは、RegExpオブジェクトを「RegExpコンストラクタ」または「リテラル構文」の2通りの方法で作成できます。 RegExpオブジェクトの作成方法 コンストラクタを使用する場合: new RegExp(pattern) リテラル構文を使用する場合: /pattern/ 主なメソッド test():文字列がパターンに一致するかどうかを真偽値(true / false)で返します。 exec():パターンに一致した文字列を返します。
-
JavaScriptのオブジェクト初期化子とは?使い方をサンプルコードで解説
オブジェクト初期化子とは オブジェクト初期化子(Object Initializer)は、新しく生成したオブジェクトを初期化するための式です。波括弧 {} の中に、「プロパティ名」と「それに対応する値」のペアを0個以上、カンマ区切りで列挙して記述します。 これにより、変数宣言と同時にオブジェクトの中身を簡単に定義することができます。 以下は、JavaScriptでオブジェクト初期化子を使用したサンプルコードです。 サンプルコード <!DOCTYPE html> <html lang="en"> <head> <meta chars