Object.prototype.toString.call()
判斷變數型別的所有方法中,該方法可以說是判斷的最完全的方法,所有的資料型別都可以判斷,在使用Object.prototype.toString.call()方法判斷變數型別時,需要判斷的變數會放在小括號內
var str = "abc"; Object.prototype.toString.call(str); // [object String]
列印出來的字串中第一個是call方法所在的原型實體是object,第二個就是我我們進行判斷的變數的資料型別,這個方法可以判斷任何的資料型別
var num= 123; Object.prototype.toString.call(num); // [object Number] var bool= true; Object.prototype.toString.call(bool); // [object Boolean] var n = null; Object.prototype.toString.call(n); // [object Null] var un = undefined; Object.prototype.toString.call(un); // [object Undefined] var func = function(){}; Object.prototype.toString.call(func); // [object Function] var obj= {}; Object.prototype.toString.call(obj); // [object Object]
以及ES6的新變數Symbol也可以進行判斷
var syb= Symbol("abc"); console.log(Object.prototype.toString.call(syb)); // [object Symbol]
typeof
typeof方法可以說是我們接觸的比較早的判斷變數的方法了,這個方法可以判斷基本資料型別
typeof "abc" // "string" typeof 123 // "number" typeof true // "boolean" typeof undefined// "undefined"
但是在判斷null型別時,與其他判斷結果產生了沖突
typeof null // object typeof [] // object typeof {} // object
結果為"function",也有沖突
typeof function(){} // "function" typeof Symbol // "function"
Symbol雖然被稱為ES6的新變數,但它本身是一個建構式,我們在宣告變數的時候可以感受到
var syb = Symbol("abc")
Symbol后面加上了一個小括號,后面帶小括號只有在呼叫函式的時候呀才回出現,而且這個地方判斷變數還有一個新的情況
typeof syb // "symbol"
當Symbol加入了引數時,typeof的結果就變成了"symbol"
constructor
通過變數的建構式也可以得到變數的型別是什么,但是不能判斷null和undefined,因為這兩個資料型別不能通過實體化得到,所以不存在建構式
[].constructor // ? Array() { [native code] } {}.constructor // ? Object() { [native code] } (123).constructor // ? Number() { [native code] } "abc".constructor // ? String() { [native code] } true.constructor // ? Boolean() { [native code] } function(){}.constructor // ? Function() { [native code] } Symbol.constructor // ? Function() { [native code] } Symbol("abc").constructor // ? Symbol() { [native code] }
這里也要注意function(){}和Symbol的建構式也都是f Function(){[native code]}
function(){}.constructor // ? Function() { [native code] } Symbol.constructor // ? Function() { [native code] }
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/169947.html
標籤:JavaScript
上一篇:現代WEB前端的性能優化
下一篇:基本資料型別和參考資料型別的區別
