JavaScript のすべてのデータ型は厳密な意味ではオブジェクトですが、実際の使用では変数が配列であるかオブジェクトであるかを判断したい場合、typeof はすべてオブジェクトを返すため使用できません。
ただし、配列もオブジェクトに属するため、上記の両方が当てはまります。したがって、instanceof を使用してデータ型がオブジェクトであるか配列であるかを判断するときは、最初に配列を判断し、最後にオブジェクト
var o = { '名前':'リー' };
var a = ['reg','blue'];
var getDataType = function(o){
If(配列のインスタンス){
'配列' を返します
}else if( o オブジェクトのインスタンス){
return 'オブジェクト';
}その他{
return 'param はオブジェクト タイプではありません';
}
};
alert( getDataType(o) ); // オブジェクト
alert( getDataType(a) ); // 配列
alert( getDataType(1) ); // param がオブジェクト タイプではありません
alert( getDataType(true) ); // param がオブジェクト タイプではありません
alert( getDataType('a') ); // param がオブジェクト型ではありません
配列を最初に判断しない場合は、たとえば次のようになります:
var o = { '名前':'リー' };
var a = ['reg','blue'];
var getDataType = function(o){
If(o オブジェクトのインスタンス){
'オブジェクト' を返します
}else if( o 配列のインスタンス ){
return '配列';
}その他{
return 'param はオブジェクト タイプではありません';
}
};
alert( getDataType(o) ); // オブジェクト
alert( getDataType(a) ); // オブジェクト
alert( getDataType(1) ); // param がオブジェクト タイプではありません
alert( getDataType(true) ); // param がオブジェクト タイプではありません
alert( getDataType('a') ); // param がオブジェクト型ではありません
すると配列もオブジェクトとして判断されます。