typeof 運算子
只能用來檢測基本型別的數值,參考型別會統一回傳 object,
- 函式:function
- 數值:number
- 字串:string
- 布林值:boolean
- undefined:undefined
- 物件:object
- 正則:function (safari < 5 || chrome < 7)
缺點:
- 自定義建構式會統一檢測為 Object,無法具體判斷建構式的型別,
instanceof 運算子
只能用來檢測參考型別,由于 js 規定所有參考型別的值都是 Object 建構式的實體,所以用 instanceof 檢測基本型別的值,始侄訓回傳 false,
檢測參考型別可以判斷出該實體所屬的建構式,
缺點:
- ? 變數與建構式必須在同一個作用域中 如果變數定義在其他的 frame 中,在主框架中是無法進行檢測的,需要進一步的嘗試,沒測出來,
toString
Object.prototype.toString.call(value) 檢測某個物件到底是原生物件還是開發人員自定義的物件
在任何資料型別上呼叫 toString 方法,會回傳 [object NativeConstructorName] 的字串,每個類在內部都有一個[[Class]]屬性,這個屬性中就指定了上述字串中的建構式名,
不能檢測非原生建構式的建構式名,因此,開發人員定義的任何建構式都將回傳[object Object]
function getType(data) {
return Object.prototype.toString.call(data).slice(8, -1);
}
constructor
判斷實體的直接建構式屬性,適用于原生建構式或者開發人員自定義的建構式,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/146316.html
標籤:JavaScript
