js類型判別大合集

  • 2019 年 10 月 4 日
  • 筆記

1.typeof

number,string,boolean,undefined,symbol,object,function

對象中除了函數為function,其他對象都判別為object,

缺陷:不能具體判別對象屬於哪一類,只是都判別為object,甚至連null都判別為object

2.Object.prototype.toString.call()

該方法詳解:http://www.cnblogs.com/youhong/p/6209054.html

針對於typeof方法的不足產生的對象判別方法,可以準確判別出內置對象的類型,但對於自定義的對象實例只能都判別為object

可能返回值: [object Number] [object String] [object Boolean] [object Undefined] [object Function] [object Object] [object Array] [object Arguments] [object Math] [object Symbol]

缺陷:無法判別自定義的對象實例

思考為什麼要用object原型的tostring方法,而不是直接用數組等對象自己的tostring?

答:因為數組等對象的tostring方法在各自的原型對象里都已經重寫過了,不會返回對象類型,而是返回其他的值。

3.A instanceof B

針對Object.prototype.toString.call()的缺陷,又有了instanceof方法,

A instanceof B,表示A的原型鏈上是否存在B的原型對象,若存在返回true,反之返回false

缺陷:無法對基本類型數據進行判斷,當A為基本類型數據時,都返回false