Object.prototype.toString() メソッド:オブジェクトのクラス名を取得

2024-04-02

JavaScript オブジェクトのクラスを取得する方法

constructor.name プロパティを使う

最も簡単な方法は、constructor.name プロパティを使うことです。これは、オブジェクトのコンストラクタの名前を返します。

const obj = new String('Hello');

console.log(obj.constructor.name); // 'String'

instanceof 演算子を使って、オブジェクトが特定のクラスのインスタンスかどうかを確認できます。

const obj = new String('Hello');

console.log(obj instanceof String); // true

Object.prototype.toString.call() メソッドを使って、オブジェクトのクラス名を含む文字列を取得できます。

const obj = new String('Hello');

console.log(Object.prototype.toString.call(obj)); // '[object String]'

自作の関数を使う

上記の方法以外にも、自作の関数を使ってオブジェクトのクラスを取得することができます。

function getClass(obj) {
  if (obj === null) {
    return 'null';
  }

  if (typeof obj === 'undefined') {
    return 'undefined';
  }

  return Object.prototype.toString.call(obj).slice(8, -1);
}

const obj = new String('Hello');

console.log(getClass(obj)); // 'String'

JavaScript オブジェクトのクラスを取得するには、いくつかの方法があります。どの方法を使うかは、状況によって異なります。

補足

  • constructor.name プロパティは、JavaScript 1.6 で導入されました。
  • Object.prototype.toString.call() メソッドは、JavaScript 1.0 で導入されました。



// 1. constructor.name プロパティを使う

const obj1 = new String('Hello');

console.log(obj1.constructor.name); // 'String'

// 2. instanceof 演算子を使う

const obj2 = new String('Hello');

console.log(obj2 instanceof String); // true

// 3. Object.prototype.toString.call() メソッドを使う

const obj3 = new String('Hello');

console.log(Object.prototype.toString.call(obj3)); // '[object String]'

// 4. 自作の関数を使う

function getClass(obj) {
  if (obj === null) {
    return 'null';
  }

  if (typeof obj === 'undefined') {
    return 'undefined';
  }

  return Object.prototype.toString.call(obj).slice(8, -1);
}

const obj4 = new String('Hello');

console.log(getClass(obj4)); // 'String'

実行方法

上記のコードをブラウザの開発者ツールなどのコンソールで実行すると、以下の結果が表示されます。

'String'
true
'[object String]'
'String'

補足

  • 上記のコードは、JavaScript 1.6 以降で動作します。
  • constructor.name プロパティは、IE 8 以前ではサポートされていません。



JavaScript オブジェクトのクラスを取得する他の方法

Object.getPrototypeOf() メソッドを使って、オブジェクトのプロトタイプを取得できます。プロトタイプの constructor プロパティには、オブジェクトのクラスが格納されています。

const obj = new String('Hello');

const proto = Object.getPrototypeOf(obj);

console.log(proto.constructor.name); // 'String'

クラスの prototype プロパティには、そのクラスのインスタンスが持つすべてのプロパティとメソッドが格納されています。

class Person {
  constructor(name) {
    this.name = name;
  }
}

const obj = new Person('John Doe');

console.log(obj instanceof Person.prototype); // true

Symbol.toStringTag シンボルは、オブジェクトのクラス名を表すシンボルです。

const obj = new String('Hello');

console.log(obj[Symbol.toStringTag]); // 'String'

補足

  • Symbol.toStringTag シンボルは、ES6 で導入されました。

javascript oop


【初心者向け】JavaScriptで動的にscript要素を追加する3つの方法

動作の不確実性ブラウザによって、document. write()で挿入された<script>タグの動作が異なります。実行されない一部のみ実行されるエラーが発生するこれらの問題は、ブラウザのバージョンや設定によっても変化するため、確実に動作させることは困難です。...


JavaScriptでCapsLock入力を検知して処理を変える

event. getModifierState() メソッドは、キーボードイベントオブジェクトを受け取り、押されている修飾キーの状態を取得します。CapsLockは修飾キーの一つなので、このメソッドを使ってCapsLockがオンかどうかを確認できます。...


JavaScriptで文字列のアクセント/ダイアクリティックを削除する方法

JavaScriptでは、文字列からアクセントやダイアクリティックと呼ばれる記号を削除することができます。これは、様々な場面で役立ちます。例えば、検索エンジンのクエリをクリーンアップするデータベースに保存する前に文字列を正規化する国際化対応したアプリケーションを作成する...


JavaScript、HTML、jQuery で画面サイズ、現在のウェブページ、ブラウザウィンドウのサイズを取得する方法

ここでは、JavaScript、HTML、jQuery を使ってこれらのサイズを取得する方法を解説します。画面サイズは、window. screen オブジェクトを使って取得することができます。このコードは、window. screen. width と window...


React Native: 要素の位置を簡単取得! 〜refとmeasureメソッドを駆使〜

コンポーネントに ref を割り当てる:onLayout プロパティを使用して、レイアウトが完了したときに measure メソッドを呼び出すコールバック関数を定義します。このコードは、myRef という ref を View コンポーネントに割り当てています。 onLayout プロパティは、コンポーネントのレイアウトが完了したときに呼び出されるコールバック関数を指定します。このコールバック関数では、event...


SQL SQL SQL SQL Amazon で見る



JavaScript オブジェクトの型を取得するライブラリ

最も簡単な方法は、typeof 演算子を使用することです。これは、オブジェクトの型を文字列で返します。ただし、typeof 演算子はオブジェクトの詳細な型情報を提供しません。例えば、Date オブジェクトと単純なオブジェクトはどちらも "object" となります。