typeof all はオブジェクトを返します
JavaScript のすべてのデータ型は厳密な意味ではオブジェクトですが、実際の使用では変数が配列であるかオブジェクトであるかを判断したい場合、typeof はすべてオブジェクトを返すため使用できません。
var o = { '名前':'リー' };
var a = ['reg','blue'];
document.write( ' o typeof は ' typeof o);
document.write( '
');
document.write( ' typeof は ' typeof a);
実行:
o typeof はオブジェクトです
typeof はオブジェクト
です
したがって、この方法は諦めるしかありません。配列かオブジェクトかを判断する方法は 2 つあります。
まず、typeof プラスの長さ属性を使用します
配列には length 属性がありますが、オブジェクトにはありません。また、配列の型とオブジェクトの型はどちらもオブジェクトを返すため、このように判断できます
var o = { '名前':'リー' };
var a = ['reg','blue'];
var getDataType = function(o){
If(typeof o == 'オブジェクト'){
If( typeof o.length == 'number' ){
'配列' を返します
}その他{
return 'オブジェクト';
}
}その他{
return 'param はオブジェクト タイプではありません';
}
};
alert( getDataType(o) ); // オブジェクト
alert( getDataType(a) ); // 配列
alert( getDataType(1) ); // param がオブジェクト タイプではありません
alert( getDataType(true) ); // param がオブジェクト タイプではありません
alert( getDataType('a') ); // param がオブジェクト型ではありません
2 番目に、instanceof を使用します。
instanceof を使用して、変数が配列であるかどうかを判断します。
var o = { '名前':'リー' };
var a = ['reg','blue'];
alert(配列のインスタンス) // true
;
alert( o 配列のインスタンス ); // false
オブジェクト
に属しているかどうかを判断することもできます。
var o = { '名前':'リー' };
var a = ['reg','blue'];
alert( Object のインスタンス) // true
alert( o Object ) // true
ただし、配列もオブジェクトに属するため、上記の両方が当てはまります。したがって、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 がオブジェクト型ではありません
すると配列もオブジェクトとして判断されます。