ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript でオブジェクトの型の名前を取得するにはどうすればよいですか?

JavaScript でオブジェクトの型の名前を取得するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-08 15:25:11732ブラウズ

How Can I Get the Name of an Object's Type in JavaScript?

JavaScript でオブジェクトの型の名前を取得する

Java では、オブジェクトの型を取得するための class.getName() メソッドが提供されています。 , JavaScript には直接相当するものがありません。ただし、同様の結果を達成するためにいくつかの手法を使用できます。

1 つの手法では、オブジェクトのプロトタイプを変更して getName() 関数を追加します。

Object.prototype.getName = function() {
  var funcNameRegex = /function (.{1,})\(/;
  var results = (funcNameRegex).exec((this).constructor.toString());
  return (results && results.length > 1) ? results[1] : """";
};

このハックにより、すべてのオブジェクトがコンストラクターの名前を文字列として返す getName() メソッドが追加されました。

別のオプションは、コンストラクター プロパティを使用することです。これは通常、次のようにオブジェクトの型をテストするために機能します。

var myArray = [1,2,3];
(myArray.constructor == Array); // true

ただし、多重継承や「new」キーワードを使用せずに作成されたオブジェクトなど、信頼性を損なう可能性があるいくつかの注意事項があります。

instanceof 演算子も別の代替手段ですが、これにも制限があります。これはリテラル値に対しては機能せず、正しいコンストラクターを使用してオブジェクトを作成する必要があります。

もう 1 つの方法は、constructor.name プロパティを使用することですが、これは IE9 以前には適していない可能性があります。互換性を維持するために、モンキーパッチ ソリューションを実装できます。

if (Function.prototype.name === undefined && Object.defineProperty !== undefined) {
  Object.defineProperty(Function.prototype, 'name', {
    get: function() {
      var funcNameRegex = /function\s([^(]{1,})\(/;
      var results = (funcNameRegex).exec((this).toString());
      return (results && results.length > 1) ? results[1].trim() : """";
    },
    set: function(value) {}
  });
}

最後に、Object.prototype.toString を使用してすべての組み込み型の型を決定できますが、すべての組み込み型に対して "Object" が返されます。

オブジェクトの型を決定する方法を選択するときは、各アプローチの注意点と制限事項を認識することが重要です。 JavaScript。

以上がJavaScript でオブジェクトの型の名前を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。