typeofはオブジェクトを返します
JavaScriptのすべてのデータ型は厳密にオブジェクトですが、実際に使用しても、まだ異なるタイプがあります。変数が配列であるかオブジェクトであるかを判断する場合、すべてオブジェクトを返すため、TypeOFで処理することはできません
コードコピーは次のとおりです。
var o = {'name': 'lee'};
var a = ['reg'、 'blue'];
document.write( 'o typeof is' + typeof o);
document.write( '<br />');
document.write( 'typeof is' + typeof a);
埋め込む:
コードコピーは次のとおりです。
o typeofはオブジェクトです
タイプはオブジェクトです
したがって、この方法のみを放棄できます。配列またはオブジェクトには2つの方法があると判断する必要があります。
まず、typeofを使用して長さの属性を追加します
アレイには長さの属性があり、オブジェクトはありません、および型配列とオブジェクトは両方ともオブジェクトを返しますので、この方法で判断できます
コードコピーは次のとおりです。
var o = {'name': 'lee'};
var a = ['reg'、 'blue'];
var getDatatype = function(o){
if(typeof o == 'object'){
if(typeof o.length == 'number'){
「配列」を返します。
}それ以外{
「オブジェクト」を返します。
}
}それ以外{
return 'paramはオブジェクトタイプではありません」;
}
};
アラート(getDatatype(o)); // 物体
アラート(getDatatype(a)); // 配列
アラート(getDatatype(1)); // paramはオブジェクトタイプではありません
アラート(getDatatype(true)); // paramはオブジェクトタイプではありません
Alert(getDatatype( 'A')); // paramはオブジェクトタイプではありません
第二に、instanceofを使用します
インスタンスを使用して、変数が次のような配列であるかどうかを判断します。
コードコピーは次のとおりです。
var o = {'name': 'lee'};
var a = ['reg'、 'blue'];
アラート(ArrayのInstance); // 真実
アラート(o instanceof array); // 間違い
また、オブジェクトに属しているかどうかを判断することもできます
コードコピーは次のとおりです。
var o = {'name': 'lee'};
var a = ['reg'、 'blue'];
アラート(オブジェクトのinstance); // 真実
Alert(o instanceof object); // 真実
しかし、配列はオブジェクトにも属しているため、上記の両方が真実です。したがって、InstanceOfを使用してデータ型がオブジェクトか配列かを判断する場合、最初に配列を判断し、最後にオブジェクトを判断する必要があります。
コードコピーは次のとおりです。
var o = {'name': 'lee'};
var a = ['reg'、 'blue'];
var getDatatype = function(o){
if(o配列のインスタンス){
「配列」を返す
} else if(o instanceof object){
「オブジェクト」を返します。
}それ以外{
return 'paramはオブジェクトタイプではありません」;
}
};
アラート(getDatatype(o)); // 物体
アラート(getDatatype(a)); // 配列
アラート(getDatatype(1)); // paramはオブジェクトタイプではありません
アラート(getDatatype(true)); // paramはオブジェクトタイプではありません
Alert(getDatatype( 'A')); // paramはオブジェクトタイプではありません
たとえば、配列を優先順位付けしない場合:
コードコピーは次のとおりです。
var o = {'name': 'lee'};
var a = ['reg'、 'blue'];
var getDatatype = function(o){
if(o instanceof object){
「オブジェクト」を返す
} else if(o instanceof array){
「配列」を返します。
}それ以外{
return 'paramはオブジェクトタイプではありません」;
}
};
アラート(getDatatype(o)); // 物体
アラート(getDatatype(a)); // 物体
アラート(getDatatype(1)); // paramはオブジェクトタイプではありません
アラート(getDatatype(true)); // paramはオブジェクトタイプではありません
Alert(getDatatype( 'A')); // paramはオブジェクトタイプではありません
その後、配列はオブジェクトとしても判断されます。