您好,登錄后才能下訂單哦!
這篇文章主要介紹JavaScript類型的判斷方法,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
本篇文章給大家帶來的內容是關于JavaScript類型判斷的方法介紹(代碼示例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。
JS數據類型判斷
有的時候需要判斷數據類型,應對各種復雜的邏輯判斷,先來個咱們最常用的。
1.typeof
typeof操作符返回一個字符串,并表示該變量的類型。
typeof oper / typeof (operand)
var testString = 'adus', testArray = [], testBoolean = true, testNumber = 0, testObject = {}, testNull = null, testUndefined = undefined console.log(typeof testString);//string console.log(typeof testArray);//object console.log(typeof testBoolean);//boolean console.log(typeof testNumber);//number console.log(typeof testObjec);//object console.log(typeof testNull);//object console.log(typeof testUndefined);//undefined
當然不只有上面的這些基礎類型,還有下面這些:
Symbol (ECMAScript 6 新增) "symbol"
宿主對象(由JS環境提供) Implementation-dependent
函數對象([[Call]] 在ECMA-262條款中實現了) "function"
咦?有點不對,為什么數組、null等都是object呢???請往下看
Function或者Array這些類型的實例的時候,其實都是基于Object實例進行的一種擴展。只是多了一些特有屬性。
在 JavaScript 最初的實現中,JavaScript 中的值是由一個表示類型的標簽和實際數據值表示的。對象的類型標簽是 0。
由于 null 代表的是 空指針(大多數平臺下值為 0x00)。
因此,null的類型標簽也成為了 0,typeof null就錯誤的返回了"object"。(reference)
2.instanceof
instanceof運算符用于測試構造函數的prototype屬性是否出現在對象的原型鏈中的任何位置,通俗點說就是一個變量是否某個對象的實例。
object instanceof constructor
object 要檢測的對象 / constructor 構造函數
function fnc(){} var newFnc = new fnc(); console.log(newFnc.__proto__ == fnc.prototype);//true console.log( newFnc instanceof fnc ) //true /*String對象和Date對象都屬于Object類型和一些特殊情況*/ var simpleStr = "This is a simple string"; var myString = new String(); var newStr = new String("String created with constructor"); var myDate = new Date(); var myObj = {}; var myNonObj = Object.create(null); simpleStr instanceof String; // 返回 false, 檢查原型鏈會找到 undefined myString instanceof String; // 返回 true newStr instanceof String; // 返回 true myString instanceof Object; // 返回 true myObj instanceof Object; // 返回 true, 盡管原型沒有定義 ({}) instanceof Object; // 返回 true, 同上 myNonObj instanceof Object; // 返回 false, 一種創建對象的方法,這種方法創建的對象不是Object的一個實例 myString instanceof Date; //返回 false myDate instanceof Date; // 返回 true myDate instanceof Object; // 返回 true myDate instanceof String; // 返回 false
3.Object.prototype.toString()
每個對象都有一個toString()方法,當該對象被表示為一個文本值時,或者一個對象以預期的字符串方式引用時自動調用。默認情況下,toString()方法被每個Object對象繼承。如果此方法在自定義對象中未被覆蓋,toString() 返回 "[object type]",其中type是對象的類型。
Function.prototype.call( thisArg ) / Function.prototype.apply( thisArg )
傳遞要檢查的對象作為第一個參數,稱為thisArg。
var toString = Object.prototype.toString; toString.call(new Date); // [object Date] toString.call(new String); // [object String] toString.call(Math); // [object Math] //Since JavaScript 1.8.5 toString.call(undefined); // [object Undefined] toString.call(null); // [object Null]
在合適的場景用恰當的方法,會很省心,也能保證代碼的簡潔、健壯。
以上是JavaScript類型的判斷方法的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。