日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

检测数据类型的几种方式

發布時間:2025/4/16 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 检测数据类型的几种方式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

JS中檢測數據類型只有四種方式

  • 1、typeof 用來檢測數據類型的運算符

  [typeof value]

1)返回值:首先是一個字符串,然后包含了我們常用的數據類型,例如:"number"、"string"、"boolean"、"undefined"、"object"、"function" typeof typeof typeof [12] -> "string" 2)typeof null ->"object" 因為null是一個空對象指針 3)typeof不能具體的細分對象、數組、正則等,因為不管檢測哪一個返回的都是"object"
  • 2、instanceof / constructor
    • 1)instanceof:檢測當前實例是否屬于某一個類,屬于的話返回true,不屬于返回false
var ary=[]; ary instanceof Array ->true ary instanceof RegExp ->false ary instanceof Object ->true 所有的對象都是Object這個基類的一個實例
    • 2)constructor
ary.constructor===Array ->true 說明ary是Array這個類的一個實例(constructor可以讓用戶自己來修改,所有我們一般不用這個來檢測)
    • 3)instanceof的局限性:只要在這個實例的原型鏈上的類,用instanceof檢測的時候都為true

在類的繼承中,我們只是單純通過instanceof來檢測數據類型的話是不準確的
[案例]

function Fn() {this.x=100;} Fn.prototype = new Array; var f = new Fn; //f只是繼承了數組中常用的方法,但是不是數組,例如:在梨樹上嫁接蘋果樹,蘋果樹只是繼承使用了梨樹的水分和營養,但是長出來的果實還是蘋果而不是梨 //console.log(f instanceof Fn);//->true //console.log(f instanceof Array);//->true //console.log(f instanceof Object);//->truevar oDiv=document.getElementById("div1"); //oDiv->HTMLDivElement->HTMLElement->Element->Node->EventTarget->Object console.log(oDiv instanceof EventTarget);//->true
  • 3、toString檢測數據類型(常用而且相對來說精準的檢測方式,上述方式出現的缺陷在這里都彌補了)
    • 1)原理:在Object.prototype上有一個toString方法,這個方法執行的時候,會返回方法中this關鍵字對應數據值的數據類型,例如:
//Object.prototype.toString() ->返回的是 Object.prototype 的數據類型 ->"[object Object]" //f.toString() ->返回的是f的數據類型 ->"[object Object]"
    • 2)這樣的話,我們就可以讓Object.prototype.toString執行,并且通過call/apply來改變里面的this關鍵字,也就是想檢測誰的數據類型,我們就可以讓this變為誰
Object.prototype.toString.call(12) ->檢測12的數據類型 ->"[object Number]" Object.prototype.toString.call("zhufeng") ->"[object String]" Object.prototype.toString.call(null) ->"[object Null]" Object.prototype.toString.call(undefined) ->"[object Undefined]" Object.prototype.toString.call([]) ->"[object Array]" Object.prototype.toString.call(/^$/) ->"[object RegExp]" Object.prototype.toString.call(function(){}) ->"[object Function]"
    • 3)檢測的返回值 -> "[object 當前數據類型所屬的內置類]"

?

轉載于:https://www.cnblogs.com/Scar007/p/7722881.html

總結

以上是生活随笔為你收集整理的检测数据类型的几种方式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。