javascript
方法的返回值类型是object_JavaScript中如何判断类型
1. typeof
- typeof (整數(shù)/小數(shù)/自然對數(shù)Math.LN2/正無窮大數(shù)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的方法當(dāng)遇到對象時, 得到的結(jié)果都是object, 并不能準(zhǔn)確的判斷, 因此此法并不完美.
2. Object.prototype.toString
原理:Object原型上的toString()方法可以判斷出類型, 格式一般為[object Function]/[object Number].... 這里需要借助call來改變this的指向. 例如:
var arr = [1, 2, 3] // 定義一個數(shù)組對象 console.log(Object.prototype.toString.call(arr)) // 改變arr的this指向, 調(diào)用Object原型鏈上的toString()方法, 輸出[object Array]那么, 為什么不可以直接使用Array/Function...內(nèi)置的toString()方法來判斷類型呢? 這是因為這些對象內(nèi)置都有toString()方法, 只不過被重寫了, 調(diào)用toString()方法輸出的結(jié)果各不一樣.
因此這種方式用來判斷換類型比較完美, 且兼容性比較好.
3. $.type()
jQuery內(nèi)置的方法, eg:
$.type(3) ===> number $.type(function(){}) ===> function $.type(null) ===> null ....優(yōu)點:
- 簡潔
- 兼容性好
- 能夠準(zhǔn)確判斷類型
缺點:
- 需要引入整個jQuery包, 增加了項目體積
4. instanceof
instanceof 用來比較一個對象是否為某一個構(gòu)造函數(shù)的實例。注意,instanceof運算符只能用于對象,不適用原始類型的值。格式為: 實例 instanceof 構(gòu)造函數(shù), 返回值為true/false
注意: 基本數(shù)據(jù)類型, 如string/null/undefined/boolean均會返回false, 但function可以用來判斷, 如:
function(){} instanceof Object // true, function在js中也是一種對象 function(){} instanceof Function // true用此法來判斷對象比較實用, 但是遇到基本類型時顯得有點雞肋, 可視情況選擇這種方法來判斷了類型
5. constructor
constructor屬性是對象才擁有的,它是從一個對象指向一個函數(shù),含義就是指向該對象的構(gòu)造函數(shù),每個對象都有構(gòu)造函數(shù).返回值為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
參考資料:
總結(jié)
以上是生活随笔為你收集整理的方法的返回值类型是object_JavaScript中如何判断类型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux:分享50个实用的基础命令,欢
- 下一篇: 点线面缓冲分析(转自esri中国社区)