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 サイトの他の関連記事を参照してください。