JavaScriptは変数が配列かどうかを判断する方法(Aray)
1577 ワード
今日はJAvascriptで変数が配列かどうかを判断するための知識を整理します.主に以下の4つの点から話題を広げます.具体的な内容は以下の通りです.
1.typeofは本当にそんなに強いですか?
2.instance of判断
3.プロトタイプチェーンの方法
第2の方法と第3の方法の限界をまとめます.
instance ofとconstructorが判断する変数は、現在のページで宣言しなければならない.例えば、一つのページにはフレームがあり、フレームにはページ(サブページ)を参照し、サブページにはaryを宣言し、親ページの変数に値を与えている.このとき、変数を判断すると、Aray=object.com.falseに戻ります
理由:
1、arrayは参照型のデータに属しており、転送中は引用アドレスの伝達だけである.
2、各ページのAray元のオブジェクトから引用された住所は違っています.サブページで声明されたarrayは、対応する構造関数であり、サブページのArayオブジェクトです.親ページで判断すると、サブページのArayとは等しくない.覚えてください.でないと、問題を追跡するのは難しいです.
4.共通の方法
はい、JavaScriptについて変数が配列かどうかを判断する方法(Aray)を紹介します.今日は主にこの四つの種類をまとめました.ここで書いたのはよくないです.また、侠客の皆様によろしくお願いします.ありがとうございます.
1.typeofは本当にそんなに強いですか?
//
var ary = [1,23,4];
console.log(typeof ary); // Object
上の方法はリアルタイムで配列かどうかを検出することができません.タイプだけを判断します.だから、typeofは基本タイプのデータがいいと判断しますが、配列かどうかを正確にテストすることはできません.2.instance of判断
var ary = [1,23,4];
console.log(ary instanceof Array)//true;
出力の効果から見ると、やはり満足しています.正確にデータの種類が配列かどうかを検出できます.喜ぶのは早すぎます.まずこの欠点を考えてみてください.私達は続けて第三の方法を話します.3.プロトタイプチェーンの方法
var ary = [1,23,4];
console.log(ary.__proto__.constructor==Array);//true
console.log(ary.constructor==Array)//true
この方法は大きくて大きいです.プロトタイプチェーンを利用した方法ですが、これは互換性があります.プロト.定義はありません.また、これには限界があります.第2の方法と第3の方法の限界をまとめます.第2の方法と第3の方法の限界をまとめます.
instance ofとconstructorが判断する変数は、現在のページで宣言しなければならない.例えば、一つのページにはフレームがあり、フレームにはページ(サブページ)を参照し、サブページにはaryを宣言し、親ページの変数に値を与えている.このとき、変数を判断すると、Aray=object.com.falseに戻ります
理由:
1、arrayは参照型のデータに属しており、転送中は引用アドレスの伝達だけである.
2、各ページのAray元のオブジェクトから引用された住所は違っています.サブページで声明されたarrayは、対応する構造関数であり、サブページのArayオブジェクトです.親ページで判断すると、サブページのArayとは等しくない.覚えてください.でないと、問題を追跡するのは難しいです.
4.共通の方法
var ary = [1,23,4];
function isArray(o){
return Object.prototype.toString.call(o)=='[object Array]';
}
console.log(isArray(ary));
具体的なObject.prototype.toStringの使い方は、Object.prototype.toStringの使い方を参照してください.はい、JavaScriptについて変数が配列かどうかを判断する方法(Aray)を紹介します.今日は主にこの四つの種類をまとめました.ここで書いたのはよくないです.また、侠客の皆様によろしくお願いします.ありがとうございます.