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