変数が配列(Array)かどうかを判断するJavaScriptメソッド_JavaScriptスキル

WBOY
リリース: 2016-05-16 15:14:00
オリジナル
1222 人が閲覧しました

今日、エディターは、変数が配列 (Array) であるかどうかを判断するための関連知識をまとめます。具体的な内容は次のとおりです。

1. typeof は本当に強力ですか? ?

//首先看代码
var ary = [1,23,4];
console.log(typeof ary); //输出结果是Object
ログイン後にコピー

上記のメソッドは、配列であるかどうかをリアルタイムで検出することはできず、その型を判断することしかできません。したがって、typeof は基本的な型データを判断することには優れていますが、配列であるかどうかを正確にテストすることはできません (具体的な使用法)。 typeof については後述します) 、本題に戻ります)

2.判決のインスタンス

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 这两段代码是一样的
ログイン後にコピー
このメソッドは非常に洗練されています~~ プロトタイプチェーンメソッドを使用していますが、これは互換性がありますが、IEの初期バージョンでは__proto__が定義されていません~ さらに、これにはまだ制限があります。次に、2番目と3番目の制限を要約しましょう。メソッド

2 番目と 3 番目の方法の制限事項を要約します

instanceof やコンストラクターで判定される変数は現在のページで宣言する必要があります。たとえば、ページ (親ページ) にはフレームがあり、そのフレーム内でページ (子ページ) が参照され、その中で ary が宣言されます。子ページを親ページの変数に代入すると、Array == object.constructor; が false を返します。

理由:

1. 配列は参照データです。転送処理中は参照アドレスの転送のみです。

2. 各ページの Array ネイティブ オブジェクトによって参照されるアドレスは異なります。サブページで宣言された配列の対応するコンストラクターは、親ページが判断して使用します。配列 これはサブページの配列と等しくないことに注意してください。そうでないと、問題を追跡するのが難しくなります。

4. 一般的なメソッド

Object.prototype.toString の具体的な使用法については、
var ary = [1,23,4];
function isArray(o){
return Object.prototype.toString.call(o)=='[object Array]';
}
console.log(isArray(ary));
ログイン後にコピー
Object.prototype.toString の使用法

を参照してください。 さて、JavaScript の変数が配列 (Array) であるかどうかを判定する方法についてはこれくらいにして、今日は主にこの 4 つのタイプについてまとめます。この記事がうまく書かれていない場合は、いくつか教えてください。アドバイスありがとうございます!

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート