JS array配列検出方式解析
typeof
instance of
toString
ObjectのtoString()を参照してオブジェクトのクラス属性をチェックすることで、配列に対してその属性の値は常に「Aray」である。
ECMAScript 5 Aray.isAray()メソッドを追加しました。
var arr = [1,2,3];
console.log(typeof arr);//'object'
配列の本質は特殊なオブジェクトなので、「object」に戻ります。typeof演算子は、元のタイプとオブジェクトのタイプを区別するためにのみ使用されますので、Arayを具体的に検出することはできません。instance of
var arr = [1,2,3];
console.log(arr instanceof Array);//true
異なるグローバル環境が存在すると、異なるバージョンのArayコンストラクタが存在し、一方のフレームから別のフレームに1つの配列が入ってくると、入力された配列と、第2のフレームにおいてオリジナルで作成された配列はそれぞれ異なるコンストラクタを有し、このときinstance of検出を使用するのは正確ではない。toString
ObjectのtoString()を参照してオブジェクトのクラス属性をチェックすることで、配列に対してその属性の値は常に「Aray」である。
function type(obj){
return Object.prototype.toString.call(obj).slice(8,-1).toLowerCase();
}
console.log(type(arr));//'array'
isArayECMAScript 5 Aray.isAray()メソッドを追加しました。
console.log(Array.isArray([]));//true
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。