作為小白,資料類型的檢測雖然不算重點,但也有點麻煩,也是容易忽視的一個知識點,就來整理一下到目前為止的關于資料類型的檢測方法
1.關于資料類型的種類
一般認為資料類型有6種類:
1.基本資料類型:number string boolean undefined null
2.複雜類型:object
但是在ES6中新增了一種新的原始資料類型symbol表示獨一無二的值
是以JavaScript到目前為止一共6種資料類型和1種複雜類型
2.檢測資料類型的方法typeof
typeof是一種簡單明了的資料類型檢測方法,它會直接傳回輸入的變量名或表達式
console.log(typeof a); //'undefined'
console.log(typeof(true)); //'boolean'
console.log(typeof '123'); //'string'
console.log(typeof 123); //'number'
console.log(typeof NaN); //'number'
console.log(typeof null); //'object'
var obj = new String();
console.log(typeof(obj)); //'object'
var fn = function(){};
console.log(typeof(fn)); //'function'
console.log(typeof(class c{})); //'function'
3.檢測資料類型的方法instanceof
instanceof運算符用來判斷一個構造函數的prototype屬性所指向的對象是否存在另外一個要檢測對象的原型鍊上
console.log(Object instanceof Function);//true
//所有的函數屬于對象,同時所有的對象由函數建構的。
console.log(Function instanceof Object);//true
//new Array 生成執行個體對象 ---> Object
//Array 類名(函數名) ---> Functiontrue
console.log(new Array instanceof Object);//true
console.log(new Array() instanceof Object);//true
console.log(Array instanceof Function);//true
console.log(new Array() instanceof Function);//false
//函數特殊
console.log(new Function instanceof Function);//true
console.log(new Function instanceof Object);//true
console.log(new String instanceof Object);//true
console.log(new String instanceof Function);//false
關于原型鍊的相關知識請自行參考另外文章,本文不再贅述。
4.檢測資料類型的方法constructor
constructor:作為原型對象的一個預設屬性存在,表示建立執行個體的構造函數的引用
let a1 = [1, 2, 3];
console.log(a1.constructor);//function Array() { [native code] }
if(a1.constructor === Array){
console.log(a1);//[1, 2, 3]
}
5.檢測資料類型的方法toString
toString() 方法可把一個邏輯值轉換為字元串,并傳回結果.
console.log(Object.prototype.toString.call(123).slice(8, - 1));//Number
console.log(Object.prototype.toString.call(123));//[object Number]
console.log(Object.prototype.toString.call('abc'));//[object String]
console.log(Object.prototype.toString.call(undefined));
//[object Undefined]
console.log(Object.prototype.toString.call(null));//[object Null]
console.log(Object.prototype.toString.call(function () { }));
//[object Function]
console.log(Object.prototype.toString.call([]));//[object Array]
console.log(Object.prototype.toString.call({}));//[object Object]
console.log(Object.prototype.toString.call(/\d/));//[object RegExp]
本文純屬初學JS小白自娛自樂,如有雷同,純屬巧合。