jsデータタイプ検出の4つの方法
2445 ワード
目次 typeof instance of constructor Object.prototype.toString.call() typeof基本データタイプは、Number、String、Boolean、undefinedおよび参照データタイプのFunnctionで、typeof検出データタイプを使用して、それぞれ対応するデータタイプの小文字を返します.また、typeofでコンストラクタを検出して作成したNumber,String,BooleanはすべてObjectの基本データタイプに戻ります.参照データタイプのうち、Aray,Object,Date,RegExp.typeofでは検出できません.小文字のobjectに戻ります.
typeof '123' // string
typeof 1 // number
typeof true // boolean
typeof Symbol('1') // symbol
typeof undefined // undefined
typeof null // object
typeof {a:1,b:2} // object
typeof c // function
instance ofはtypeofで判断する以外に、instance ofを使用することができます.instance of演算子は、与えられたオブジェクトのプロトタイプチェーン上にプロトタイプがあるかどうかを判断するために使用される特定のタイプを指定する必要があります.基本データタイプはNumber、String、Booleanです.文字の大きさはinstance ofでは検出できませんが、コンストラクタが作成した値は大丈夫です.nullとundefinedがfalseに戻ります.これは彼らのタイプが自分自身なので、Objectが作成したのではなく、falseに戻りました.
console.log(2 instanceof Number); // false
console.log(true instanceof Boolean);// false
console.log('str' instanceof String);// false
console.log([] instanceof Array);// true
console.log(function(){} instanceof Function);// true
console.log({} instanceof Object);// true
// console.log(undefined instanceof Undefined);
// console.log(null instanceof Null);
constructor constructorはprototypeオブジェクト上の属性であり、構造関数を指します.例示的なオブジェクトに従って属性を探す順序は、インスタンスオブジェクトに例示的な属性または方法がない場合は、プロトタイプチェーン上で探すため、インスタンスオブジェクトもconstrutor属性を使用することができる.undefinedとnull以外のタイプは、constructor属性でタイプを判断できます.console.log((2).constructor === Number);
console.log((true).constructor === Boolean);
console.log(('str').constructor === String);
console.log(([]).constructor === Array);
console.log((function() {}).constructor === Function);
console.log(({}).constructor === Object);
Object.prototype.toString.call()は、toString()によって各オブジェクトの種類を取得することができる.各オブジェクトがObject.prototype.toString()によって検出されるためには、Function.prototype.call()またはFunction.prototype.apply()の形で呼び出す必要があり、検査対象を伝達する最初のパラメータとして、thisArgと呼ぶ.このように、Object.prototype.toString.call()の方式を使って変数のタイプを判断するのが最も正確な方法であることが見られます.var a = Object.prototype.toString;
console.log(a.call(2));
console.log(a.call(true));
console.log(a.call('str'));
console.log(a.call([]));
console.log(a.call(function(){}));
console.log(a.call({}));
console.log(a.call(undefined));
console.log(a.call(null));