この記事の内容はJavaScriptのデータ型(コード)の判定方法を紹介したものであり、ある程度の参考価値はありますので、困っている方は参考にしていただければ幸いです。
1. よく使われる typeof
は配列、オブジェクト、null の判定に不向きで、実行結果は下図のようになります。
var obj = { number:123, string: '123', bool: true, obj: {}, arr: [], n: null, undef: undefined, fn: function () {} } for(key in obj) { console.log(key + ": " + typeof obj[key]) }
instanceof は、コンストラクターのプロトタイプ属性がオブジェクトのプロトタイプ チェーンのどこかに現れるかどうかをテストします。
プロトタイプ チェーンを理解すると、プロトタイプ チェーンの複雑さがわかります。instanceof で取得される値は固定されていません。プロトタイプ チェーンに沿って検索されます。最も明らかなことは、すべての基本データ型が Object から継承されていることです。 .protype.
[任何数据类型] instanceof Object > true
以下に示すように:
以下は、最適で、最も包括的で、最も効果的な互換性ソリューションです。
以下に 2 つの実装方法 (プロトタイプ方法とグローバル方法) があり、ニーズに応じて選択できます。
(function () { function isType(type,data) { // data是全局方法时使用的,原型方法可不填 return Object.prototype.toString.call(data || this) === '[object ' + type + ']' } // 全局方法支持null和undefined // window.isType = isType // 添加到数据类型的原型中,不支持null和undefined Object.defineProperty(Object.prototype,'isType',{ value:isType, writable:true, enumerable:false, configurable:true }); })()
使用法:
var str = 'abc'; // 全局方法 isType('String', str) // True // 原型方法 str.isType('String')
テスト コード:
var obj = { test: { number:123, string: '123', obj: {}, bool: true, arr: [], n: null, undef: undefined, fn: function () { } } } // 原型方法不支持null和undefined,请用“===” console.log(obj.test.number.isType('Number')) console.log(obj.test.number.isType('String')) console.log(obj.test.string.isType('String')) console.log(obj.test.string.isType('Number')) console.log(obj.test.obj.isType('Object')) console.log(obj.test.obj.isType('Array')) console.log(obj.test.arr.isType('Array')) console.log(obj.test.arr.isType('Object')) console.log(obj.test.fn.isType('Function')) console.log(obj.test.fn.isType('Object'))
この記事はすべてここにあり、その他の記事も含まれています。エキサイティングなコンテンツについては、次のことができます。 PHP 中国語 Web サイトの JavaScript ビデオ チュートリアル 列に注目してください。 ! !
以上がJavaScriptでデータ型を判定する方法(コード)の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。