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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

方法的返回值类型是object_JavaScript中如何判断类型

發布時間:2023/12/10 javascript 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 方法的返回值类型是object_JavaScript中如何判断类型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. typeof

  • typeof (整數/小數/自然對數Math.LN2/正無窮大數Infinity) ===> numbertypeof NaN ===> number
  • typeof (function(){}) ===> functiontypeof Math.sin ===> function
  • typeof undefined ===> undefined
  • typeof 'xxxx' ===> stringtypeof '' ===> string
  • typeof true/false ===> boolean
  • typeof Symbol() ===> symboltypeof Symbol.iterator ===> symbol
  • typeof {}/new Date()/[]/null/new RegExp() ===> object

typeof的方法當遇到對象時, 得到的結果都是object, 并不能準確的判斷, 因此此法并不完美.

2. Object.prototype.toString

原理:Object原型上的toString()方法可以判斷出類型, 格式一般為[object Function]/[object Number].... 這里需要借助call來改變this的指向. 例如:

var arr = [1, 2, 3] // 定義一個數組對象 console.log(Object.prototype.toString.call(arr)) // 改變arr的this指向, 調用Object原型鏈上的toString()方法, 輸出[object Array]

那么, 為什么不可以直接使用Array/Function...內置的toString()方法來判斷類型呢? 這是因為這些對象內置都有toString()方法, 只不過被重寫了, 調用toString()方法輸出的結果各不一樣.

因此這種方式用來判斷換類型比較完美, 且兼容性比較好.

3. $.type()

jQuery內置的方法, eg:

$.type(3) ===> number $.type(function(){}) ===> function $.type(null) ===> null ....

優點:

  • 簡潔
  • 兼容性好
  • 能夠準確判斷類型

缺點:

  • 需要引入整個jQuery包, 增加了項目體積

4. instanceof

instanceof 用來比較一個對象是否為某一個構造函數的實例。注意,instanceof運算符只能用于對象,不適用原始類型的值。

格式為: 實例 instanceof 構造函數, 返回值為true/false

注意: 基本數據類型, 如string/null/undefined/boolean均會返回false, 但function可以用來判斷, 如:

function(){} instanceof Object // true, function在js中也是一種對象 function(){} instanceof Function // true

用此法來判斷對象比較實用, 但是遇到基本類型時顯得有點雞肋, 可視情況選擇這種方法來判斷了類型

5. constructor

constructor屬性是對象才擁有的,它是從一個對象指向一個函數,含義就是指向該對象的構造函數,每個對象都有構造函數.

返回值為true/false, 例如:

new Number(3).constructor === Number // true new Function().constructor === Function // true ''.constructor === String // true new Boolean().constructor === Boolean // true new Date().constructor === Date // true ...

有一點需要注意, 有時繼承的時候constructor會被重寫, 這里不做過多表述.

6. JS新語法判斷類型

isArray() // 返回值會false/true

isNaN() // 判斷是否為NaN

參考資料:

  • js基礎(一):判斷類型
  • 由Object.prototype.toString.call( )引發關于toString( )方法的思考
  • 深入理解Object.prototype.toString.call()
  • typeof和instanceof原理
  • 幫你徹底搞懂JS中的prototype、proto與constructor(圖解)
  • 總結

    以上是生活随笔為你收集整理的方法的返回值类型是object_JavaScript中如何判断类型的全部內容,希望文章能夠幫你解決所遇到的問題。

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