欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript判斷數(shù)據(jù)類型有幾種方法及區(qū)別介紹

 更新時間:2020年09月02日 09:14:34   作者:꧁薇博꧂  
這篇文章主要介紹了JavaScript判斷數(shù)據(jù)類型有幾種方法及區(qū)別介紹,本文給大家分享多種方法通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

有五種數(shù)據(jù)判斷類型方法typeof 、instanceof、constructor、Object.prototype.toString.call()、jquery.type()

一、typeof方法

typeof是個操作符,可以判斷基本數(shù)據(jù)類型(返回的結(jié)果只能是number,string,boolean,null,symbol,function,object)
返回值分以下幾種
對于基本類型。除了null值返回object以外,其他均返回正確的結(jié)果
對于引用值來說,除了function返回function類型,其他都返回object類型
例:

console.log(
 typeof 100, //"number"
 typeof 'abc', //"string"
 typeof false, //"boolean"
 typeof undefined, //"undefined"
 typeof null, //"object"
 typeof [1,2,3], //"object"
 typeof {a:1,b:2,c:3}, //"object"
 typeof function(){console.log('aaa');}, //"function"
 typeof new Date(), //"object"
 typeof /^[a-zA-Z]{5,20}$/, //"object"
 typeof new Error() //"object"
 typeof new Number(100), //'object'
 typeof new String('abc'),// 'string'
 typeof new Boolean(true),//'boolean'
)
 

二、instanceof方法

一般用來檢測引用數(shù)據(jù)類型,表達(dá)式為:A instanceof B,判斷A是否是B的實例,如果 A 是 B 的實例,則返回 true,否則返回 false,由構(gòu)造類型判斷出數(shù)據(jù)類型

console.log(
 100 instanceof Number, //false
 'dsfsf' instanceof String, //false
 false instanceof Boolean, //false
 undefined instanceof Object, //false
 null instanceof Object, //false
 [1,2,3] instanceof Array, //true
 {a:1,b:2,c:3} instanceof Object, //true
 function(){console.log('aaa');} instanceof Function, //true
 new Date() instanceof Date, //true
 /^[a-zA-Z]{5,20}$/ instanceof RegExp, //true
 new Error() instanceof Error //true
)
//注意: instanceof 后面一定要是對象類型,大小寫不能寫錯,該方法試用一些條件選擇或分支

還需要注意null和undefined都返回了false,這是因為它們的類型就是自己本身,并不是Object創(chuàng)建出來它們,所以返回了false。

三、constructor方法

constructor是prototype對象上的屬性,指向構(gòu)造函數(shù),

var num = 123;
var str = 'abcdef';
var bool = true;
var arr = [1, 2, 3, 4];
var json = {name:'wenzi', age:25};
var func = function(){ console.log('this is function'); }
var und = undefined;
var nul = null;
var date = new Date();
var reg = /^[a-zA-Z]{5,20}$/;
var error= new Error();

function Person(){
 
}
var tom = new Person();

// undefined和null沒有constructor屬性
console.log(
 tom.constructor==Person,
 num.constructor==Number,
 str.constructor==String,
 bool.constructor==Boolean,
 arr.constructor==Array,
 json.constructor==Object,
 func.constructor==Function,
 date.constructor==Date,
 reg.constructor==RegExp,
 error.constructor==Error
);
//所有結(jié)果均為true

注意:除了undefined和null之外,其他類型都可以通過constructor屬性來判斷類型

方法四:Object.prototype.toString 方法

用來檢測對象類型

var toString = Object.prototype.toString;

toString.call(123); //"[object Number]"
toString.call('abcdef'); //"[object String]"
toString.call(true); //"[object Boolean]"
toString.call([1, 2, 3, 4]); //"[object Array]"
toString.call({name:'wenzi', age:25}); //"[object Object]"
toString.call(function(){ console.log('this is function'); }); //"[object Function]"
toString.call(undefined); //"[object Undefined]"
toString.call(null); //"[object Null]"
toString.call(new Date()); //"[object Date]"
toString.call(/^[a-zA-Z]{5,20}$/); //"[object RegExp]"
toString.call(new Error()); //"[object Error]"

toString是Object原型對象上的一個方法,該方法默認(rèn)返回其調(diào)用者的具體類型更嚴(yán)格的講,是 toString運行時this指向的對象類型, 返回的類型格式為[object,xxx],xxx是具體的數(shù)據(jù)類型,其中包括:String,Number,Boolean,Undefined,Null,F(xiàn)unction,Date,Array,RegExp,Error,HTMLDocument等等都可以通過這個方法獲取到

5、無敵萬能的方法:jquery.type()

如果對象是undefined或null,則返回相應(yīng)的“undefined”或“null”。

jQuery.type( undefined ) === "undefined"
jQuery.type() === "undefined"
jQuery.type( window.notDefined ) === "undefined"
jQuery.type( null ) === "null"

如果對象有一個內(nèi)部的[[Class]]和一個瀏覽器的內(nèi)置對象的 [[Class]] 相同,我們返回相應(yīng)的 [[Class]] 名字

jQuery.type( true ) === "boolean"
jQuery.type( 3 ) === "number"
jQuery.type( "test" ) === "string"
jQuery.type( function(){} ) === "function"
jQuery.type( [] ) === "array"
jQuery.type( new Date() ) === "date"
jQuery.type( new Error() ) === "error" // as of jQuery 1.9
jQuery.type( /test/ ) === "regexp"

其他一切都將返回它的類型“object”。
6 . 自己也可以封裝一個獲取變量準(zhǔn)確類型的函數(shù)

function gettype(obj) {
 var type = typeof obj;

 if (type !== 'object') {
 return type;
 }
 //如果不是object類型的數(shù)據(jù),直接用typeof就能判斷出來

 //如果是object類型數(shù)據(jù),準(zhǔn)確判斷類型必須使用Object.prototype.toString.call(obj)的方式才能判斷
 return Object.prototype.toString.call(obj).replace(/^\[object (\S+)\]$/, '$1');
}

總結(jié)

到此這篇關(guān)于JavaScript判斷數(shù)據(jù)類型有幾種方法及區(qū)別介紹的文章就介紹到這了,更多相關(guān)js 判斷數(shù)據(jù)類型內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 一起來了解下Swiper插件的使用和介紹

    一起來了解下Swiper插件的使用和介紹

    這篇文章主要為大家詳細(xì)了解了Swiper插件的使用和介紹,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • 在JS中如何把毫秒轉(zhuǎn)換成規(guī)定的日期時間格式實例

    在JS中如何把毫秒轉(zhuǎn)換成規(guī)定的日期時間格式實例

    本篇文章主要介紹了在JS中如何把毫秒轉(zhuǎn)換成規(guī)定的日期時間格式實例,非常具有實用價值,需要的朋友可以參考下
    2017-05-05
  • JSX在render函數(shù)中的應(yīng)用詳解

    JSX在render函數(shù)中的應(yīng)用詳解

    這篇文章主要介紹了JSX在render函數(shù)中的應(yīng)用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Bootstrap datepicker日期選擇器插件使用詳解

    Bootstrap datepicker日期選擇器插件使用詳解

    這篇文章主要為大家詳細(xì)介紹了Bootstrap datepicker日期選擇器插件的使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • JavaScript中 this 指向問題深度解析

    JavaScript中 this 指向問題深度解析

    這篇文章主要介紹了JavaScript中 this 指向問題深度解析,JavaScript 中的 this 指向問題有很多文章在解釋,仍然有很多人問,本文給大家深度解析,需要的朋友可以參考下
    2017-02-02
  • 在 javascript 中如何快速獲取數(shù)組指定位置的元素

    在 javascript 中如何快速獲取數(shù)組指定位置的元素

    這篇文章主要介紹了在 javascript 中快速獲取數(shù)組指定位置的元素,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • 詳解javascript 變量提升(Hoisting)

    詳解javascript 變量提升(Hoisting)

    這篇文章主要介紹了詳解javascript 變量提升(Hoisting),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-03-03
  • javascript DOM實用學(xué)習(xí)資料

    javascript DOM實用學(xué)習(xí)資料

    比較詳細(xì)的實例分析了dom的一些常用方法
    2008-09-09
  • 使用微信內(nèi)嵌H5網(wǎng)頁解決JS倒計時失效問題

    使用微信內(nèi)嵌H5網(wǎng)頁解決JS倒計時失效問題

    最近參考項目開發(fā),遇到這樣一個需求將H5商城頁面嵌套到公司微信公眾號里,在開發(fā)遇到一個棘手的問題,js倒計時失效問題,怎么回事呢?下面說下我使用微信內(nèi)嵌h5解決的這一問題,需要的朋友參考下吧
    2017-01-01
  • JS如何判斷對象是否包含某個屬性

    JS如何判斷對象是否包含某個屬性

    這篇文章主要介紹了JS如何判斷對象是否包含某個屬性,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08

最新評論