JavaScript目前有兩種資料型別:基本資料型別和參考資料型別,
基本資料型別:Undefined、Null、Boolean、String、Number、Symbol(ES6)
參考資料型別:Object
鑒于ECMAScript是松散型別的,需要有方式檢測給定變數的資料型別,下面介紹三種檢測資料型別的方法,
1、typeof
typeof是一元運算子,放在起單個運算元的前面,運算元可以是任意型別,

typeof "1"; //"string" typeof 1; //"number" typeof undefined; //"undefined" typeof true; //"boolean" typeof Symbol(); //"symbol" typeof null; //"object"
注:Null型別只有一個值是null,null值是表示一個空物件指標,所以typeof null會回傳object,
注:以下三種為判斷參考型別資料的方法,
2、instanceof
typeof是檢測基本資料型別的得力助手,檢測參考型別用途卻不大,instanceof通常檢測是參考型別,左運算元是待檢測其類的物件,右運算元是物件的類,如果左側的物件是右側的實體,則回傳true,否則回傳false,
var d = new Date();// 通過Date()建構式來創建一個新物件 d instanceof Date; // true d instanceof Object; // true,所有的物件都是Object的實體 d instanceof Number; // false var a = [1, 2, 3]; a instanceof Array; // true a instanceof Object; // true,所有的陣列都是物件 a instanceof String; // false
想要理解instanceof的作業原理就必須要理解原型鏈,
以d instanceof Date 為例,JS首先計算Date.prototype,然后在原型鏈中找 d ,如果找到,那d 是Date的一個實體,運算式回傳true,如果Date.prototype不在d 的原型鏈中的話,那d 不是Date的實體,運算式回傳false,
3、constructor屬性
建構式是類的公共標識,所以可以使用construct屬性來識別物件是否是某個類的方法,
var s = new String(); s.constructor == String; // true var a = new Array(); a.constructor == Array; // true
4、類屬性
var a = new Array(); Object.prototype.toString(); // "[object Object]" Object.prototype.toString.call(a); // "[object Array]" Object.prototype.toString.call(a).slice(8,-1); // "Array"
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/207644.html
標籤:JavaScript
