您好,登錄后才能下訂單哦!
小編給大家分享一下JS如何判斷數據類型,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
JS判斷數據類型的方法有:typeof方法用于返回該類型的字符串形式,instanceof方法用來判斷原型,constructor方法以及Object.prototype.toString 方法
方法一:typeof方法
typeof 是一個操作符,右側是一個一元表達式,并返回這個表達式的數據類型。返回的結果用該類型的字符串的形式表示,包括:number、boolean、symbol、string、object、undefined、function 等。
返回值分以下幾種類型:
對于基本類型。除了null值返回object以外,其他均返回正確的結果
對于引用值來說,除了function返回function類型,其他都返回object類型
例:
<script type="text/javascript"> var a = "string"; console.log(a); //string var a = 1; console.log(typeof a); //number var a = false; console.log(typeof a); //boolean var a; console.log(typeof a); //undfined var a = null; console.log(typeof a); //object var a = document; console.log(typeof a); //object var a = []; console.log(a); //[] var a = function() {}; console.log(typeof a) //function </script>
效果圖:
方法二:instanceof方法
instanceof 是用來判斷 A 是否為 B 的實例,表達式為:A instanceof B,如果 A 是 B 的實例,則返回 true,否則返回 false。 在這里需要特別注意的是:instanceof 檢測的是原型。
<script type="text/javascript"> var a=[]; console.log(a instanceof Array) </script>
返回的結果:true
方法三:constructor方法
當一個函數被定義時,JS引擎會為它添加 prototype 原型,然后再在 prototype上添加一個 constructor 屬性,并讓其指向該函數的引用。
當執行 var f = new F() 時,F被當成了構造函數,f 是F的實例對象,此時 F 原型上的 constructor 傳遞到了 f 上,因此 f.constructor == F
方法四:Object.prototype.toString 方法
toString是Object原型對象上的一個方法,該方法默認返回其調用者的具體類型,更嚴格的講,是 toString運行時this指向的對象類型, 返回的類型格式為[object,xxx],xxx是具體的數據類型,其中包括:String,Number,Boolean,Undefined,Null,Function,Date,Array,RegExp,Error,HTMLDocument等等都可以通過這個方法獲取到。
console.log(Object.prototype.toString.call(num)); console.log(Object.prototype.toString.call('')) ; console.log(Object.prototype.toString.call(1)) ; console.log(Object.prototype.toString.call(true)) ; console.log(Object.prototype.toString.call(null)) ; console.log(Object.prototype.toString.call(new Function()) ); console.log(Object.prototype.toString.call(new Date())) ; console.log(Object.prototype.toString.call([])) ; console.log(Object.prototype.toString.call(document)) ; console.log(Object.prototype.toString.call(window) );
效果圖:
看完了這篇文章,相信你對JS如何判斷數據類型有了一定的了解,想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。