JavaScript獲取物件資料型別

admin發表於2018-08-19

關於JavaScript資料型別可以參閱JavaScript 資料型別一章節。

在實際應用中,我們可能需要精準的獲取一個物件的資料型別,然後再執行相應程式碼。

可能不少朋友第一個想到的就是使用typeof運算子實現檢測功能。

程式碼例項如下:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
console.log(typeof 8)

程式碼執行比較完美,谷歌控制檯執行截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201808/19/022648lr2fyoxmlq8y33jq.jpg\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

再來看一段程式碼例項:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
let arr =["螞蟻部落","前端知識",6];
console.log(typeof arr);

a:3:{s:3:\"pic\";s:43:\"portal/201808/19/022714q9j4utustn2djql2.jpg\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

沒錯,陣列確實是object型別,但是我們更希望他能給出精準的結果。

可見typeof在某些時候是力不從心的,更多關於typeof內容可以參閱JavaScript typeof運算子一章節。

精準獲取方式如下:

首先給出程式碼例項,然後再進行分析:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
function getType(obj){
  var type = Object.prototype.toString.call(obj).slice(8, -1);
  return type;
}
console.log(getType(new String("antzone")));
console.log(getType(["螞蟻部落","前端知識",6]));

谷歌控制檯執行截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201808/19/022819k3k39wiwi3w9v8x9.jpg\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

執行結果非常的完美,下面做一下分析:

雖然ES2015之前沒有類這個概念,但是在物件內部具有Class類屬性。

Object.prototype.toString方法可以獲取類屬性,返回值形式如下:

[JavaScript] 純文字檢視 複製程式碼
[object Class]

如果我們要獲取的物件是陣列,那麼上述方法的返回值就是[object Array],以此類推。

然後用slice方法對字串進行切割擷取,輸出結果就比較人性化了。

相關文章