摘要:區(qū)別對(duì)象和數(shù)組的六種方法方法一利用方法通過(guò)調(diào)用方法試著將該變量轉(zhuǎn)化為代表其類型的。該方法對(duì)于真正的可行參數(shù)對(duì)象轉(zhuǎn)化為時(shí)返回會(huì)轉(zhuǎn)化失敗此外,對(duì)于含有數(shù)字長(zhǎng)度屬性的類也會(huì)轉(zhuǎn)化失敗。
區(qū)別對(duì)象和數(shù)組的六種方法
(1)方法一:利用toString方法
通過(guò)調(diào)用toString( )方法試著將該變量轉(zhuǎn)化為代表其類型的string。該方法對(duì)于真正的array可行;參數(shù)對(duì)象轉(zhuǎn)化為string時(shí)
返回[object Arguments]會(huì)轉(zhuǎn)化失敗;此外, 對(duì)于含有數(shù)字長(zhǎng)度屬性的object類也會(huì)轉(zhuǎn)化失敗。
1. function isArrayOne(arr){
2. return Object.prototype.toString.call(arr) === "[object Array]";
3. }
4. var obj = {"k1":"v1"};
5. var arr = [1,2];
6. console.log("對(duì)象的結(jié)果:"+isArrayOne(obj));
7. console.log("數(shù)組的結(jié)果:"+isArrayOne(arr));
注意:推薦使用“===”全等于而不使用“==”等等于,因?yàn)樾矢撸≡蛘?qǐng)看我的的博客《前端開(kāi)發(fā)的45個(gè)技巧》
(2)方法二:通過(guò)isArray:
使用Javascript 1.8.5(ECMAScript 5),變量名字.isArray( )可以實(shí)現(xiàn)這個(gè)目的,前提是有支持這一函數(shù),其實(shí)isArray就是
方法一的封裝使用。
使用方法十分簡(jiǎn)單:
1. Array.isArray(obj); //obj是待檢測(cè)的對(duì)象
返回true或false,如果為true則為數(shù)組
(3)方法三:通過(guò)instanceof運(yùn)算符來(lái)判斷,
注意:instanceof運(yùn)算符左邊是子對(duì)象(待測(cè)對(duì)象),右邊是父構(gòu)造函數(shù)(這里是Array),
即:子對(duì)象 instanceof 父構(gòu)造函數(shù)
instance: 實(shí)例:凡是用new 構(gòu)造函數(shù)()創(chuàng)建出的對(duì)象,都稱為是構(gòu)造函數(shù)的實(shí)例
1. var obj = {"k1":"v1"}; 2. var arr = [1,2]; 3. console.log("Instanceof處理對(duì)象的結(jié)果:"+(obj instanceof Array)); 4. console.log("Instanceof處理數(shù)組的結(jié)果:"+(arr instanceof Array));
4)使用isPrototypeOf()函數(shù)
原理:檢測(cè)一個(gè)對(duì)象是否是Array的原型(或處于原型鏈中,不但可檢測(cè)直接父對(duì)象,還可檢測(cè)整個(gè)原型鏈上的所有父對(duì)象)
使用方法: parent.isPrototypeOf(child)來(lái)檢測(cè)parent是否為child的原型;
需注意的是isPrototypeOf()函數(shù)實(shí)現(xiàn)的功能和instancof運(yùn)算符非常類似;
具體代碼:
1. Array.prototype.isPrototypeOf(arr) //true表示是數(shù)組,false不是數(shù)組
(5)利用構(gòu)造函數(shù)constructor
constructor 屬性返回對(duì)創(chuàng)建此對(duì)象的數(shù)組函數(shù)的引用。
具體代碼:
1. var obj = {"k":"v"}; 2. var t1 = new Array(1); 3. var t2 = t1; 4. console.log(obj.constructor == Array); 5. console.log(t1.constructor == Array); 6. console.log(t2.constructor == Array);
(6)使用typeof(對(duì)象)+類型名結(jié)合判斷:
代碼如下:
1. function isArrayFour(arr){ 2. if(typeof(arr)==="object"){ 3. if(arr.concat){ 4. return "This is Array"; 5. }else{ 6. return "This Not Array"; 7. } 8. } 9. } 10.var arr = [1]; 11.var obj = {"k":"v"}; 12.console.log(typeof(arr)); 13.console.log(typeof(obj)); 14.console.log(isArrayFour(arr)); 15.console.log(isArrayFour(obj));
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/98061.html
摘要:對(duì)象構(gòu)造函數(shù)的判斷用法的每個(gè)實(shí)例都有構(gòu)造函數(shù),用于保存著用于創(chuàng)建當(dāng)前對(duì)象的函數(shù)如上所示,的實(shí)例的跟對(duì)象是相等的那么我們就可以用此來(lái)判斷數(shù)組了原型鏈上的用法屬性表示構(gòu)造函數(shù)的原型其中有一個(gè)方法是用于測(cè)試一個(gè)對(duì)象是否存在于另一個(gè)對(duì)象的原型鏈上。 在JS中,數(shù)組是屬于Object類型的,也就是屬于引用類型(引用類型存放在堆內(nèi)存中,在棧內(nèi)存會(huì)有一個(gè)或者多個(gè)地址來(lái)指向這個(gè)堆內(nèi)存)。 所以對(duì)于引用...
摘要:數(shù)組去重第一種方法先對(duì)數(shù)組進(jìn)行排序,排好序,然后把數(shù)組的當(dāng)前項(xiàng)和后一項(xiàng)進(jìn)行比較,相同則使用數(shù)組的相同的位置,,但是為了防止數(shù)組塌陷,每次刪除數(shù)組元素的時(shí)候要把的值減一。 數(shù)組去重 第一種方法: 先對(duì)數(shù)組進(jìn)行排序sort(),排好序,然后把數(shù)組的當(dāng)前項(xiàng)和后一項(xiàng)進(jìn)行比較,相同則使用數(shù)組的splice(相同的位置,1),但是為了防止數(shù)組塌陷,每次刪除數(shù)組元素的時(shí)候要把i的值減一。 ...
摘要:本文是根據(jù)虎牙直播運(yùn)維負(fù)責(zé)人張觀石月日在攜手魅族百度云主辦的第十三期魅族開(kāi)放日虎牙直播平臺(tái)實(shí)踐演講中的分享內(nèi)容整理而成。英雄聯(lián)盟是全球最大的電子競(jìng)技賽事,目前正在如火如荼進(jìn)行,從今天開(kāi)始進(jìn)入了總決賽的淘汰賽階段了。 showImg(https://segmentfault.com/img/bVblQM9?w=1080&h=720); 本文是根據(jù)虎牙直播運(yùn)維負(fù)責(zé)人張觀石10月20日在ms...
摘要:以下為幾種異步編程方式的總結(jié),希望與君共勉。回調(diào)函數(shù)事件監(jiān)聽(tīng)發(fā)布訂閱模式異步編程傳統(tǒng)的解決方案回調(diào)函數(shù)和事件監(jiān)聽(tīng)初始示例假設(shè)有兩個(gè)函數(shù)和,是一個(gè)需要一定時(shí)間的函數(shù)。 異步編程 眾所周知 JavaScript 是單線程工作,也就是只有一個(gè)腳本執(zhí)行完成后才能執(zhí)行下一個(gè)腳本,兩個(gè)腳本不能同時(shí)執(zhí)行,如果某個(gè)腳本耗時(shí)很長(zhǎng),后面的腳本都必須排隊(duì)等著,會(huì)拖延整個(gè)程序的執(zhí)行。以下為幾種異步編程方式的總...
摘要:虎牙直播運(yùn)維負(fù)責(zé)人張觀石張觀石,擁有余年網(wǎng)站開(kāi)發(fā)架構(gòu)運(yùn)維經(jīng)驗(yàn)?zāi)壳瓣P(guān)注互聯(lián)網(wǎng)服務(wù)可靠性系統(tǒng)工程運(yùn)維平臺(tái)的規(guī)劃建設(shè)網(wǎng)站高可用架構(gòu)等方面在音視頻傳輸質(zhì)量評(píng)估微服務(wù)運(yùn)維方面積累了豐富的經(jīng)驗(yàn)。 showImg(https://segmentfault.com/img/bVbjqGq); 虎牙直播運(yùn)維負(fù)責(zé)人張觀石 張觀石,擁有10余年網(wǎng)站開(kāi)發(fā)、架構(gòu)、運(yùn)維經(jīng)驗(yàn);目前關(guān)注互聯(lián)網(wǎng)服務(wù)可靠性系統(tǒng)工程、運(yùn)維...
閱讀 2209·2021-11-22 15:29
閱讀 4098·2021-11-04 16:13
閱讀 991·2019-08-29 16:58
閱讀 339·2019-08-29 16:08
閱讀 1457·2019-08-23 17:56
閱讀 2378·2019-08-23 17:06
閱讀 3166·2019-08-23 16:55
閱讀 2058·2019-08-23 16:22