js判斷類型的四種方法


typeof:使用typeof可以很方便的判斷六種類型:undefined、boolean、string、number、object、function 數組和null會被判斷為object類型

instanceof:instanceof判斷對象是某類型的實例,他可以很方便的判斷出數組和null,但是也有不足,

  1:在多個框架的時候,如果從一個iframe傳遞數組到另外一個iframe去判斷是否是數組,就會出問題,因為instanceof本質上是判斷實例,而兩個iframe分屬不同的window對象,所以這個時候就無法判斷

  2:instanceof可以判斷出實例的數組,同樣它也認為實例是對象,這是因為instanceof 檢測一個對象A是不是另一個對象B的實例的原理是:查看對象B的prototype指向的對象是否在對象A的[[prototype]]鏈上。如果在,則返回true,如果不在則返回false。不過有一個特殊的情況,當對象B的prototype為null將會報錯(類似於空指針異常)。array的prototype所指向的對象確實是在數組實例的的原型鏈上,但是object的prototype所指向的對象也是在數組實例的的原型鏈上

constructor:構造器 它指向構造該對象的構造函數,比如說:var obj = {};console.log(obj .constructor == Object);但是constructor容易被篡改,所以不是很穩定

Object.prototype.toString.call():

console.log(Object.prototype.toString.call(123)) //[object Number]
console.log(Object.prototype.toString.call('123')) //[object String]
console.log(Object.prototype.toString.call(undefined)) //[object Undefined]
console.log(Object.prototype.toString.call(true)) //[object Boolean]
console.log(Object.prototype.toString.call({})) //[object Object]
console.log(Object.prototype.toString.call([])) //[object Array]
console.log(Object.prototype.toString.call(function(){})) //[object Function]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM