今日、エディターは、変数が配列 (Array) であるかどうかを判断するための関連知識をまとめます。具体的な内容は次のとおりです。
1. typeof は本当に強力ですか? ?
//首先看代码 var ary = [1,23,4]; console.log(typeof ary); //输出结果是Object
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 这两段代码是一样的
instanceof やコンストラクターで判定される変数は現在のページで宣言する必要があります。たとえば、ページ (親ページ) にはフレームがあり、そのフレーム内でページ (子ページ) が参照され、その中で ary が宣言されます。子ページを親ページの変数に代入すると、Array == object.constructor; が false を返します。
理由:
1. 配列は参照データです。転送処理中は参照アドレスの転送のみです。
2. 各ページの Array ネイティブ オブジェクトによって参照されるアドレスは異なります。サブページで宣言された配列の対応するコンストラクターは、親ページが判断して使用します。配列 これはサブページの配列と等しくないことに注意してください。そうでないと、問題を追跡するのが難しくなります。4. 一般的なメソッド
var ary = [1,23,4]; function isArray(o){ return Object.prototype.toString.call(o)=='[object Array]'; } console.log(isArray(ary));