這篇文章帶給大家的內容是關於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類型判斷的方法介紹(程式碼範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!