JS判斷物件型別方法
typeof
typeof 方法 右邊要跟一個 資料 就能回傳這個資料的資料型別 注意typeof 不是方法 不需要加()
回傳的資料型別有 string(字串) number(數字) object(物件)array(陣列)boolean(布爾)null(空)undefined(未定義)
var x = []
var y = {}
var z =null
var a
console.log( typeof 'aaa') // string
console.log( typeof 123) // number
console.log( typeof true) // boolean
console.log( typeof a) // undefined
console.log( typeof b) // undefined 未宣告也是 undefined
console.log( typeof x) // object 陣列也是物件 但是用typeof 不能檢測出是陣列
console.log( typeof y) // object
console.log( typeof z) // object null是空的物件 用typeof檢測也是物件
instanceof
instanceof 用來判斷 instanceof 前的 資料 是否 為 instanceof 后的型別 回傳一個布林值 同樣不用加() 但是instanceof只能用來檢測物件
var x = []
var y = {}
var z =null
var a = 'aaa'
console.log(x instanceof Object) //true 陣列也是物件
console.log(x instanceof Array) //true
console.log(y instanceof Object) //true
console.log(y instanceof Array) //false 但陣列不一定是物件
console.log(z instanceof Object) //false 用instanceof檢測空物件 也是檢測不出來的
console.log(a instanceof String) //false instanceof只能用來判斷物件 對字串無效
constructor
constructor 是通過原型鏈進行查找的 可以用來查找物件和普通資料 相比于 instanceof 和 typeof 會更加精準
var x = []
var y = {}
var z = Date()
var a = 'aaa'
console.log(x.constructor==Object) //false 在這里 陣列并不被識別成物件
console.log(x.constructor==Array) //true
console.log(y.constructor==Object) //true
console.log(a.constructor==String) //true 字串可以正常被識別
console.log(z.constructor==Object) //false 時間物件也不被識別成物件
console.log(z.constructor==Date) // true
Object.prototype.toString()
Object.prototype.toString() 是Object原型的方法 相比于以上三個 更加精準
var x = []
var y = {}
var z = new Date()
var a = 'aaa'
console.log(Object.prototype.toString.call(x)) //[object Array]
console.log(Object.prototype.toString.call(y)) //[object Object]
console.log(Object.prototype.toString.call(z)) //[object Date]
console.log(Object.prototype.toString.call(a)) //[object String]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/206308.html
標籤:其他
上一篇:C++特征碼查找 附加案例
