1、typeof 用來檢測資料型別的運算子
console.log(typeof 12)//number
使用typeof檢測資料型別,首先返回的都是字串 ,其次字串中包含了對應的資料型別
例如:"number"、"string"、"boolean"、"undefined"、"function"、"object"
console.log(typeof typeof function(){}) //string
侷限性:
typeof null -> "object"
不能具體的細分是陣列還是正則,還是物件中其他的值,因為使用typeof檢測資料型別,對於物件資料型別中的值,最後返回的結果都是"object"
2、instanceof 檢測某乙個例項是否屬於某個類
var obj = [12,23];console.log(obj
instanceof array);
侷限性:
對於基本資料型別來說,字面量方式建立出來的結果和例項方式建立出來的結果是有一定的區別的。從嚴格意義上講,只有例項建立出來的結果才是標準的物件資料型別值,也是標準的number這個類的乙個例項;對於字面量方式建立出來的結果是基本的資料型別值,不是嚴謹的例項,但是由於js的鬆散特點,導致了可以使用number.prototype上的方法
1)、不能用來檢測和處理字面量方式建立出來的基本資料型別值
console.log(1 instanceof number);//false
console.log(new number(1) instanceof number)//
true
2)、instanceof的特性:只要在當前例項的原型鏈上,我們用其檢測的結果都為true
var ary =;console.log(ary
instanceof array);//
true
console.log(ary instanceof object);//
true
function
fn()
console.log(fn
instanceof function);//
true
console.log(fn instanceof object);//
true
3、constructor 建構函式 作用和instanceof非常的相似constructor可以處理基本資料型別的檢測
constructor檢測object和instanceof不一樣 一般情況下是檢測不了的
var obj =;console.log(obj.constructor === array)//
true
var num = 1;
console.log(num.constructor === number)//
true
侷限性:我們可以把類的原型進行重寫,在重寫的過程中很有可能出現把之前的constructor給覆蓋掉了,這樣檢測出來的結果就不準確了。
對於特殊的資料型別null和undefined,他們所屬的類是null和undefined,但是瀏覽器把這兩個類保護起來了,不允許我們在外面訪問使用
4、object.prototype.tostring.call()
最準確最常用的方式 各種型別的都可以檢測(基本和引用)
首先獲取object原型上的tostring方法,讓方法執行,並且改變方法中的this關鍵字的指向
tostring的理解:
表面上看應該是轉化成字串,但是某些tostring方法不僅僅是轉換為字串
對於number、string、boolean、array、regexp、date、function原型上的tostring方法都是把當前的資料型別轉化為字串的型別(他們的作用僅僅是用來轉換為字串的)
object.prototype.tostring()並不是用來轉化為字串的,他的作用是返回當前方法執行主體(方法中的this)所屬類的詳細資訊。
().tostring() //[object object]
math.tostring()//
[object math]
().tostring() //[object object]
math.tostring()//
[object math]
var obj = ;
console.log(obj.tostring())
//tostring中的this是obj,返回的是obj所屬的類的資訊。[object object] 第乙個object代表當前例項是物件資料型別的(這個是固定的),第二個object代表的是obj所屬的類是object
console.log((1).tostring()) // "1" number.prototype.tostring轉化為字串
console.log((128).tostring(2/8/10)) 把數字轉化為2進製、8進製、10進製
所以上面的方法的檢測如下
var ary =;console.log(object.prototype.tostring.call(ary))
//[object array]
js檢測資料型別四種辦法
1.typeof console.log typeof string console.log typeof 1 number console.log typeof true boolean console.log typeof null object console.log typeof undef...
js檢測資料型別的四種方式
js常見的資料型別分為兩種,第一種是基本資料型別 string number null undefined boolean symbol bigint 第二種是引用資料型別 object array regexp.常見的檢測資料型別方式 1 typeof 2 instanceof 3 constru...
資料型別檢測的四種方式
typeof 檢測資料型別的運算子 返回的都是乙個字串 型別 number string boolean undefined function object console.log typeof 12 console.log typeof 14 console.log typeof undefine...