老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)

如何在javascript中對(duì)數(shù)據(jù)類型進(jìn)行檢測(cè)

如何在javascript中對(duì)數(shù)據(jù)類型進(jìn)行檢測(cè)?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

我們提供的服務(wù)有:成都做網(wǎng)站、成都網(wǎng)站制作、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、通江ssl等。為千余家企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的通江網(wǎng)站制作公司

在javascript中數(shù)據(jù)類型

值類型: 布爾(Boolean),數(shù)值(Number),字符(String),空(Null),未定義(Undefined)

引用類型: 對(duì)象(Object),函數(shù)(Function),數(shù)組(Array),日期(Date),正則(RegExp)等等。

檢測(cè)方式之 typeof

console.log(typeof undefined)//'undefined'
console.log(typeof null) // object
console.log(typeof true) //'boolean'
console.log(typeof 123) //'number'
console.log(typeof NaN) //'number'
console.log(typeof "abc") //'string'
console.log(typeof function() {}) //'function'
var arr=[];
console.log(typeof {}) //'object'
console.log(typeof arr)//'object'

從上面可以看出來(lái)用 typeof 來(lái)檢測(cè),不嚴(yán)謹(jǐn)。

null 被檢測(cè)成為了 object,  null 值表示一個(gè)空對(duì)象指針,用typeof操作符檢測(cè)null值時(shí)會(huì)返回object的原因, 這是在設(shè)計(jì)ECMAscript時(shí)候存在的一些bug。

同樣是js不嚴(yán)謹(jǐn)?shù)囊环N表現(xiàn)形式。而數(shù)組也被檢測(cè)成為了一個(gè)對(duì)象, 所以用這種方式不嚴(yán)謹(jǐn)。

檢測(cè)方式之 toString.call()

console.log(toString.call(undefined) ) // '[object Window]''
console.log(toString.call(null) ) // '[object Window]'
console.log(toString.call(true) ) // '[object Boolean]'
console.log(toString.call(123) ) // '[object Number]'
console.log(toString.call(NaN) ) // '[object Number]'
console.log(toString.call("abc") ) // '[object String]'
console.log(toString.call(function() {})) // '[object Function]'
var arr=[];
console.log(toString.call({}) ) // '[object Object]'
console.log(toString.call(arr) ) // '[object Array]'

可以看出來(lái)出了undefined和null 這兩個(gè),其他的檢測(cè)都還是比較嚴(yán)謹(jǐn)?shù)摹?/p>

其中toString()函數(shù)是window的一個(gè)不可枚舉函數(shù),繼承自O(shè)bject

還可以寫成這樣:

window.toString.call('hello'); // "[object String]"
Object.prototype.toString.call('hello'); // "[object String]"

檢測(cè)方式之 constructor

console.log('haha'.constructor == String); // true
console.log([].constructor === Array); // true
console.log({}.constructor === Object); // true
console.log(true.constructor === Boolean); // true
var a = 111; // 此處必須要用變量來(lái)代表數(shù)字,不然會(huì)報(bào)錯(cuò),從這也能看出來(lái)js是一門不嚴(yán)謹(jǐn)?shù)恼Z(yǔ)言
console.log(a.constructor === Number); // true

我們通過(guò)把實(shí)例的構(gòu)造函數(shù)指向其他地方,來(lái)改變它的constructor,就不安全了,不推薦使用 如下代碼所示:

var AAA = function(){}; // 定義一個(gè)AAA對(duì)象
AAA.prototype = {
 say:function() {
  alert('hello');
 }
}
var arr1 = new Array(); // 定義一個(gè)數(shù)組
arr1.constructor = function AAA(){}; // 這里可以改變實(shí)例的constructor。
arr1.__proto__ = AAA.prototype; // 此處改變了原型鏈
console.log(arr1.constructor); // AAA
console.log(arr1 instanceof AAA); // true 原型鏈已經(jīng)改變,arr1 已經(jīng)不屬于Array了。
console.log(arr1 instanceof Array); // false
// 下面我們來(lái)讓AAA的原型鏈連到 Array上
AAA.prototype.__proto__ = Array.prototype;
console.log(arr1 instanceof Array); // true

檢測(cè)方式之 instanceof

檢測(cè)是否是某一對(duì)象的實(shí)例

console.log([] instanceof Array); // true
console.log({} instanceof Object); // true
console.log('haha' instanceof String); // false
console.log(true instanceof Boolean); // false
console.log(1 instanceof Number); // false

前面兩個(gè)是true,后面的全是false 說(shuō)明了用 A instanceof B 來(lái)檢測(cè)的前提條件必須是A,B都為對(duì)象,通過(guò)下面的方式就可以看出來(lái)了

var a = new Number(1);
var b = new String('haha');
var t = new Boolean(true);
console.log(a instanceof Number); // true
console.log(b instanceof String); // true
console.log(t instanceof Boolean); // true

此種方式也不安全,后面會(huì)有闡述,有關(guān)instanceof 和 isPrototypeOf的區(qū)別,我們以后再來(lái)探討

還有一種is的方式比如:Array.isArray() 專門用來(lái)檢測(cè)數(shù)組

console.log(Array.isArray([])); // true

這個(gè)有兼容問(wèn)題,IE8及其以下版本瀏覽器不被支持

而jQuery里面也給我們提供了一些解決方案

jQuery.isArray():是否為數(shù)組。
jQuery.isEmptyObject():是否為空對(duì)象(不含可枚舉的屬性)。
jQuery.isFunction():是否為函數(shù)。
jQuery.isNumeric():是否為數(shù)字。
jQuery.isPlainObject():是否為使用“{}”或“new Object”生成的對(duì)象,而不是瀏覽器原生提供的對(duì)象。
jQuery.isWindow():是否為window對(duì)象。
jQuery.isXMLDoc():判斷一個(gè)DOM節(jié)點(diǎn)是否處于XML文檔之中。

總結(jié)

通過(guò)以上幾種方式,我們知道在不同的時(shí)候用不同的檢測(cè)方式,是一種有效的解決方案。

拓展

在number類型中,還有一種檢測(cè)是有窮數(shù)字的方法叫 isFinite(), 比如任何數(shù)字除以0,都為無(wú)窮大。Infinity,-Infinity,非數(shù)字都會(huì)被判為false

console.log(3/0); // Infinity
console.log(-3/0); // -Infinity
console.log(isFinite(3/0)); // false
console.log(isFinite(-3/0)); // false
console.log(isFinite(NaN)); // false
console.log(isFinite('haha')); // false
console.log(isFinite(true)); // true 在這里 true 被轉(zhuǎn)換成了數(shù)字 1
console.log(isFinite(false)); // true 在這里 false 被轉(zhuǎn)換成了數(shù)字 0

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。


網(wǎng)頁(yè)名稱:如何在javascript中對(duì)數(shù)據(jù)類型進(jìn)行檢測(cè)
當(dāng)前URL:http://www.xueling.net.cn/article/poiccp.html

其他資訊

在線咨詢
服務(wù)熱線
服務(wù)熱線:028-86922220
TOP
主站蜘蛛池模板: 色小妹av| 国内精品久久久久久久久久 | 丰满人妻一区二区三区无码av | 在线视频久草 | 天天天久久久 | 国产日产亚洲系列最新 | 国产成人综合美国十次 | 国产精品二区二区三区 | 天堂亚洲免费视频 | 久久亚洲道色宗和久久 | 亚洲国产AV无码专区亚洲AV | 成人在线观看日韩 | 超碰99热| 青草青在线 | 亚洲AV永久无码精品桃花岛知道 | 巨茎中出肉欲人妻在线视频 | 疯狂做受xxxx老少配 | 国产激情免费视频在线观看 | 亚洲AV久久爆乳一区二区 | 亚洲欧美日本a∨在线观看 欧美96在线丨欧 | 国产成人无码A区视频 | 国产自偷在线拍精品热乐播AV | 久久综合久久鬼色 | 日本精品少妇一区二区三区 | 国产麻豆高潮流白浆喷水免费网站 | 午夜国产小视频 | 天天艹逼网 | 爱射综合网 | 欧美麻豆久久久久久中文 | 一级国产视频 | 精品xxxx户外露出视频 | 亚洲第九十七页 | 1000部精品久久久久久久久 | 一级片色| 国产wwwwww| www.一区二区三区.com | 国产成人精品999视频 | 97中文字幕在线观看 | 9cao在线播放精品日韩 | 日本XXXWWW在线观看 | 无码爆乳超乳中文字幕在线 |