JavaScriptのnew演算子とObject()コンストラクターの違いとは?
JavaScriptでオブジェクトを生成する方法として、「new演算子」と「Object()コンストラクター」があります。この記事では、それぞれの役割と使い方、そして両者の関係についてわかりやすく解説します。
new演算子とは
new演算子は、オブジェクトのインスタンスを生成するために使用される演算子です。オブジェクトを作成する際には、new演算子に続けてコンストラクターメソッドを記述します。
次の例では、Object()、Array()、Date()というコンストラクターメソッドを使用しています。これらはJavaScriptに組み込まれている標準関数です。
var department = new Object();
var books = new Array("C++", "Perl", "Java");
var day = new Date("December 1, 2017");
このように、new演算子は配列や日付など、さまざまな種類のオブジェクトを生成するための汎用的な仕組みです。コンストラクターを指定することで、目的に応じたオブジェクトを作り出せます。
Object()コンストラクターとは
コンストラクターとは、オブジェクトを生成し初期化するための関数のことです。JavaScriptには、オブジェクトを構築するための特別なコンストラクター関数としてObject()が用意されています。
Object()コンストラクターの戻り値は変数に代入されます。この変数には、新しく生成されたオブジェクトへの参照が格納されます。
なお、オブジェクトに代入されるプロパティは変数ではないため、varキーワードを使って定義する必要はありません。ドット記法(object.property)で直接プロパティを追加できます。
サンプルコード
以下は、new演算子とObject()コンストラクターを組み合わせて、本(book)オブジェクトを生成し、プロパティを設定して表示する実行例です。
<html>
<head>
<title>Object Constructor</title>
<script>
var book = new Object(); // オブジェクトを生成
book.subject = "Perl"; // オブジェクトにプロパティを代入
book.author = "Tutorialspoint";
</script>
</head>
<body>
<script type="text/javascript">
document.write("Book name is : " + book.subject + "<br>");
document.write("Book author is : " + book.author + "<br>");
</script>
</body>
</html>
実行結果
Book name is : Perl Book author is : Tutorialspoint
まとめ
new演算子はオブジェクトのインスタンスを生成するための演算子であり、Object()コンストラクターはその対象となる汎用のコンストラクター関数です。つまり、new Object()のように両者は組み合わせて使われます。new演算子はArray()やDate()など他のコンストラクターにも利用でき、Object()コンストラクターは空のオブジェクトを生成してプロパティを自由に追加できる点が特徴です。
-
【C++】コピーコンストラクタと代入演算子の違いを徹底解説
C++には、あるオブジェクトをもとに別のオブジェクトを初期化・設定するための仕組みとして、「コピーコンストラクタ」と「代入演算子」の2つがあります。一見似ていますが、両者には重要な違いがあります。最大の違いはメモリの扱いです。コピーコンストラクタは、新しいオブジェクトに対して独立したメモリ領域を新たに作成します。一方、代入演算子は新しいメモリ領域を確保せず、すでに存在するオブジェクト同士の間で値を受け渡すだけです。コピーコンストラクタとはコピーコンストラクタは、同じクラスの既存オブジェクトをもとに新しいオブジェクトを初期化するための特殊なコンストラクタです。実体としては、引数に自分自身のクラス
-
JavaとJavaScriptの違いとは?歴史・技術・使い分けを徹底解説
ウェブ開発者のジェレミー・キースは2009年、「JavaとJavaScriptの関係は、ハムとハムスターの関係のようなものだ」と語りました。この比喩がどれほど正確かは議論の余地がありますが、その本質は的確です。共通する言語的ルーツを持つにもかかわらず、JavaとJavaScriptはまったく異なる2つのプログラミング言語なのです。年月とともに両者の重なりも多少増えましたが、今なおJavaScriptはウェブサイトにインタラクティブ性をもたらすフロントエンド言語の主流であり続け、Javaはサーバーサイドやアプリケーション開発で人気を保っています。開発者を採用したい方、プログラミングを学びたい方