JS配列を検出する4つの方法

検出のあなたの4つの方法と今日とシェアは長くないものの、JSの配列ではなく、より包括的なアプローチが考慮されるべきです。

1. instanceofの方法

instanceofのオブジェクトは、クラスのインスタンスであるかどうかを検出するためにinstaceof判断を使用することも可能であるオブジェクトの配列でもあります。

let arr = [1, 2, 3];
console.log(arr.instanceof(Array)); // true

この方法でのみ、グローバルスコープ環境は可能ですが、ページには、複数のフレームが含まれている場合、それは別の地球環境を持つことになり、異なる環境のArrayコンストラクタは異なっているので、2つアレイの枠組みの中で検出されたアレイフレームを通過するが、配列が別のフレームで検出されなかった場合、問題が存在することになります。

2. Array.isArray方法

端の値を決定するための方法でIsArrayにかかわらず環境にあるものの可能で、アレイはありません。しかし、この方法は、IEブラウザの低いバージョンでサポートされていません。

let arr = [1, 2, 3];
console.log(Array.isArray(arr));

3. Arrayコンストラクタ

あなたは、配列を使用することができます作成するとlet arr = new Array()今度は、私たちはそのコンストラクタを取得するには、コンストラクタのプロパティを使用することができ、の形で値が配列でないかを決定するために配列に基づくものではありません。

let arr = [1, 2, 3];
console.log(arr.constructor === Array) // true

この方法および方法は異なる可能性があり、複数の環境をArrayコンストラクタで同じ欠点を持っていますが、複数の環境で単語の配列を渡したい場合は、問題が発生する可能性があります。

4. Object.prototype.toString.call()メソッド

私たちは、任意の値にオブジェクトネイティブtoStringメソッド呼び出しを知っている、戻ります[オブジェクトNativeConstructorName]書式文字列もこの試験を利用するために使用することができる配列ではありません。

let arr = [1, 2, 3];
console.log(Object.prototype.toString.call(arr) === "[object Array]"); // true

コンストラクタの名前は、このメソッドは関係なく、どのような条件の下で、右の配列を検出することはできませんので、地球環境のネイティブ配列とは何の関係もありませんので。

注:方法1と方法3の配列プロパティウィンドウです。

不正はああ、私を修正してください場合は、完成しました。

おすすめ

転載: www.cnblogs.com/zhangguicheng/p/12178034.html