JavaScriptで新しいデータ型を作成することは可能?クラスとinstanceofの使い方を徹底解説
はい、可能です。JavaScriptではクラス(Class)の概念を利用することで、独自のデータ型を作成できます。また、作成したオブジェクトが実際にどのデータ型(クラス)に属しているのかを確認したい場合は、instanceof演算子を使用します。
instanceof演算子は、あるオブジェクトが特定のクラスのインスタンスであるかどうかを判定できる演算子です。以下では、新しいデータ型の作成方法と、データ型を確認するためのカスタム実装を含むサンプルコードを紹介します。
コード例
以下がサンプルコードです。
// クラスを作成
class Game {
constructor(gameName) {
this.gameName = gameName;
}
}
// オブジェクトを作成
const ticTacToe = new Game("TicTacToe");
// データ型を確認する関数
function dataTypeBelongsTo(object) {
if (object instanceof Game)
return "Game";
return typeof object;
}
console.log("The ticTacToe is the object of Game class=" + (ticTacToe instanceof Game));
console.log("The data Type of ticTacToe is =" + dataTypeBelongsTo(ticTacToe));
console.log("The data Type Candy Cash is =" + dataTypeBelongsTo("Cady Cash"));
プログラムの実行方法
上記のプログラムを実行するには、ターミナルで次のコマンドを使用します。
node fileName.js
ここでは、ファイル名を「demo288.js」として保存したものとします。
出力結果
コンソールには以下のような出力が表示されます。
PS C:\Users\Amit\javascript-code> node demo288.js The ticTacToe is the object of Game class=true The data Type of ticTacToe is =Game The data Type Candy Cash is =string
コードの解説
このコードでは、まずGameクラスを定義し、コンストラクタでゲーム名を受け取る構造にしています。new Game("TicTacToe")によってインスタンスを生成すると、そのオブジェクトはinstanceof演算子によるチェックで「Game」型と判定されます。一方、「Candy Cash」のようなプリミティブな文字列値はtypeofによって「string」型と判定される仕組みです。
typeofとinstanceofの違いを押さえておこう
typeofはstringやnumber、booleanなどのプリミティブ型や「object」「function」といった大まかな分類を返す演算子です。それに対してinstanceofは、オブジェクトがどのコンストラクタ(クラス)から生成されたものかを正確に判定できます。カスタムデータ型を扱う際には、この両者を組み合わせることで、柔軟かつ厳密な型チェックが実現できます。
-
JavaScriptの型キャスト(型変換)とは?String・Number・Booleanの使い方を解説
型キャスト(型変換)とは?型キャストとは、あるデータ型を別のデータ型へ明示的に変換することを指します。JavaScriptでは、以下の3つの関数を使った変換が最も一般的です。String() … 文字列型へ変換Boolean() … 真偽値型へ変換Number() … 数値型へ変換それぞれの関数に値を渡すだけで、簡単に目的の型へ変換できるのが特徴です。JavaScriptで型キャストを行うコード例以下は、JavaScriptで型キャストを行うサンプルコードです。ボタンをクリックすると、値「44」が文字列・数値・真偽値へそれぞれ変換され、結果が画面に表示されます。<!DOCTYPE htm
-
JavaScriptのnew.targetメタプロパティとは?使い方をわかりやすく解説
JavaScriptのnew.targetとはnew.targetは、関数やコンストラクタが実行時にnewキーワードを使って呼び出されたかどうかを判定できるメタプロパティです。通常、関数をnewをつけずに呼び出すと、コンストラクタとして意図された関数でも単なる通常の関数として実行されてしまい、グローバルオブジェクトにプロパティが設定されるなどの予期しない動作を引き起こす可能性があります。new.targetを利用することで、このような誤用を検出し、エラーとして通知することができます。new演算子とともに呼び出された場合、new.targetは呼び出されたコンストラクタ自身への参照を返します。一