天天看點

JS初學關于資料類型的檢測方法

作為小白,資料類型的檢測雖然不算重點,但也有點麻煩,也是容易忽視的一個知識點,就來整理一下到目前為止的關于資料類型的檢測方法

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小白自娛自樂,如有雷同,純屬巧合。

繼續閱讀