摘要:過完春節又有好多人尋找新的機會,旁邊的人面試完就會分享一些問題,明明會的但是面試的時候,想不全,面試官不滿意這個懊惱的行為,今天的文章跟大家分享下如何判斷便是是數組。
過完春節又有好多人尋找新的機會,旁邊的人面試完就會分享一些問題,明明會的但是面試的時候,想不全,面試官不滿意...這個懊惱的行為,今天的文章跟大家分享下:javascript如何判斷便是是數組。
1. typeof真的那么厲害嗎??
//首先看代碼 var ary = [1,23,4]; console.log(typeof ary); //輸出結果是Object
上面的辦法并不能實時的檢測出是否是數組,只能判斷其類型,所以說typeof判斷基本類型數據還是挺好的,但是不能準確測試出是否是數組(typeof的具體用法以后提及,現在回歸正題)
2.instanceof 判斷
var ary = [1,23,4]; console.log(ary instanceof Array)//true;
從輸出的效果來看,還是挺令人滿意的,能準確的檢測出數據類型是否是數組,不要高興的太早,大家先想想這個的缺點,我們接著說第三種方法
3.原型鏈方法
var ary = [1,23,4]; console.log(ary.__proto__.constructor==Array);//true console.log(ary.constructor==Array)//true 這兩段代碼是一樣的
這個辦法開起來好高大上哦~~,利用了原型鏈的方法,但是但是,這個是有兼容的哦,在IE早期版本里面__proto__
是沒有定義的哦~而且,這個仍然有局限性,我們現在就來總結一下第2種方法和第3種方法局限性
總結一下第2種方法和第3種方法局限性
instanceof 和constructor 判斷的變量,必須在當前頁面聲明的,比如,一個頁面(父頁面)有一個框架,框架中引用了一個頁面(子頁面),在子頁面中聲明了一個ary,并將其賦值給父頁面的一個變量,這時判斷該變量,Array == object.constructor;會返回false;
原因:
1、array屬于引用型數據,在傳遞過程中,僅僅是引用地址的傳遞。
2、每個頁面的Array原生對象所引用的地址是不一樣的,在子頁面聲明的array,所對應的構造函數,是子頁面的Array對象;父頁面來進行判斷,使用的Array并不等于子頁面的Array;切記,不然很難跟蹤問題!
4.通用的方法
var ary = [1,23,4]; function isArray(o){ return Object.prototype.toString.call(o)=="[object Array]"; } console.log(isArray(ary));
具體Object.prototype.toString 的用法,請參照Object.prototype.toString的用法
今天總結這四種,算是三種吧,typeof是為了引出后面的instanceof,當然總結這四種也是參考了網上的一些意見,如果不妥之處,請多指正~~希望和各位多多交流~
5、追加一種新的方法 Array.isArray(arg);
因為是新添加的,在不支持的瀏覽器上可能有兼容性,用的時候需要兼容下不支持的瀏覽器,這個時候就要結合第4中方法了
if(!Array.isArray){ Array.isArray = function(arg){ return Object.prototype.toString.call(arg)==="[object Array]" } }
而且此方法可以支持iframe判斷是否是數組,其實是第四中的變形
再多的方法也需要擼碼來加強用法和經驗,前端們趕緊擼碼記憶吧....
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/115078.html
摘要:過完春節又有好多人尋找新的機會,旁邊的人面試完就會分享一些問題,明明會的但是面試的時候,想不全,面試官不滿意這個懊惱的行為,今天的文章跟大家分享下如何判斷便是是數組。 過完春節又有好多人尋找新的機會,旁邊的人面試完就會分享一些問題,明明會的但是面試的時候,想不全,面試官不滿意...這個懊惱的行為,今天的文章跟大家分享下:javascript如何判斷便是是數組。 1. typeof真的那...
摘要:過完春節又有好多人尋找新的機會,旁邊的人面試完就會分享一些問題,明明會的但是面試的時候,想不全,面試官不滿意這個懊惱的行為,今天的文章跟大家分享下如何判斷便是是數組。 過完春節又有好多人尋找新的機會,旁邊的人面試完就會分享一些問題,明明會的但是面試的時候,想不全,面試官不滿意...這個懊惱的行為,今天的文章跟大家分享下:javascript如何判斷便是是數組。 1. typeof真的那...
摘要:語法部分屬性默認的就是,所以不必顯式指定為。不強制在每個語句結尾加,會自動加分號,但是在某些情況下會改變程序的語義,所以最好主動加。實際上,默認有一個全局對象。 語法部分: 1.type 屬性: 默認的 type 就是 javascript, 所以不必顯式指定 type 為 javascript。2.javascript 不強制在每個語句結尾加 ; , javascript 會自...
摘要:檢測函數從技術上講,中的函數是引用類型,同樣存在構造函數,每個函數都是其實例,比如不好的寫法然而,這個方法亦不能跨幀使用,因為每個幀都有各自的構造函數,好在運算符也是可以用于函數的,返回。 上周寫過一篇讀書筆記《編寫可維護的JavaScript》之編程實踐,其中 第8章 避免『空比較』是博主在工作中遇坑較多的雷區,所以特此把該章節重新整理分享,希望大家不再坑隊友(>﹏<)。 在 Jav...
閱讀 3093·2021-09-22 15:54
閱讀 3981·2021-09-09 11:34
閱讀 1767·2019-08-30 12:48
閱讀 1160·2019-08-30 11:18
閱讀 3431·2019-08-26 11:48
閱讀 912·2019-08-23 17:50
閱讀 2118·2019-08-23 17:17
閱讀 1239·2019-08-23 17:12