ホームページ  >  記事  >  ウェブフロントエンド  >  変数がオブジェクトであるか array_javascript スキルであるかを判断する JavaScript メソッド

変数がオブジェクトであるか array_javascript スキルであるかを判断する JavaScript メソッド

WBOY
WBOYオリジナル
2016-05-16 16:38:271254ブラウズ

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 がオブジェクト型ではありません

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