成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

javascript 判斷變量是否是數(shù)組(Array)

RayKr / 1779人閱讀

摘要:過完春節(jié)又有好多人尋找新的機會,旁邊的人面試完就會分享一些問題,明明會的但是面試的時候,想不全,面試官不滿意這個懊惱的行為,今天的文章跟大家分享下如何判斷便是是數(shù)組。

過完春節(jié)又有好多人尋找新的機會,旁邊的人面試完就會分享一些問題,明明會的但是面試的時候,想不全,面試官不滿意...這個懊惱的行為,今天的文章跟大家分享下:javascript如何判斷便是是數(shù)組。

1. typeof真的那么厲害嗎??

//首先看代碼
var ary = [1,23,4];
console.log(typeof ary); //輸出結(jié)果是Object

上面的辦法并不能實時的檢測出是否是數(shù)組,只能判斷其類型,所以說typeof判斷基本類型數(shù)據(jù)還是挺好的,但是不能準(zhǔn)確測試出是否是數(shù)組(typeof的具體用法以后提及,現(xiàn)在回歸正題)
2.instanceof 判斷

var ary = [1,23,4];
console.log(ary instanceof Array)//true;

從輸出的效果來看,還是挺令人滿意的,能準(zhǔn)確的檢測出數(shù)據(jù)類型是否是數(shù)組,不要高興的太早,大家先想想這個的缺點,我們接著說第三種方法
3.原型鏈方法

var ary = [1,23,4];
console.log(ary.__proto__.constructor==Array);//true
console.log(ary.constructor==Array)//true 這兩段代碼是一樣的

這個辦法開起來好高大上哦~~,利用了原型鏈的方法,但是但是,這個是有兼容的哦,在IE早期版本里面__proto__
是沒有定義的哦~而且,這個仍然有局限性,我們現(xiàn)在就來總結(jié)一下第2種方法和第3種方法局限性

總結(jié)一下第2種方法和第3種方法局限性
instanceof 和constructor 判斷的變量,必須在當(dāng)前頁面聲明的,比如,一個頁面(父頁面)有一個框架,框架中引用了一個頁面(子頁面),在子頁面中聲明了一個ary,并將其賦值給父頁面的一個變量,這時判斷該變量,Array == object.constructor;會返回false;
原因:
1、array屬于引用型數(shù)據(jù),在傳遞過程中,僅僅是引用地址的傳遞。
2、每個頁面的Array原生對象所引用的地址是不一樣的,在子頁面聲明的array,所對應(yīng)的構(gòu)造函數(shù),是子頁面的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的用法

今天總結(jié)這四種,算是三種吧,typeof是為了引出后面的instanceof,當(dāng)然總結(jié)這四種也是參考了網(wǎng)上的一些意見,如果不妥之處,請多指正~~希望和各位多多交流~

5、追加一種新的方法 Array.isArray(arg);
因為是新添加的,在不支持的瀏覽器上可能有兼容性,用的時候需要兼容下不支持的瀏覽器,這個時候就要結(jié)合第4中方法了

if(!Array.isArray){
    Array.isArray = function(arg){
        return Object.prototype.toString.call(arg)==="[object Array]"
    }

}

而且此方法可以支持iframe判斷是否是數(shù)組,其實是第四中的變形

再多的方法也需要擼碼來加強用法和經(jīng)驗,前端們趕緊擼碼記憶吧....

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/115078.html

相關(guān)文章

  • javascript 判斷變量數(shù)組Array

    摘要:過完春節(jié)又有好多人尋找新的機會,旁邊的人面試完就會分享一些問題,明明會的但是面試的時候,想不全,面試官不滿意這個懊惱的行為,今天的文章跟大家分享下如何判斷便是是數(shù)組。 過完春節(jié)又有好多人尋找新的機會,旁邊的人面試完就會分享一些問題,明明會的但是面試的時候,想不全,面試官不滿意...這個懊惱的行為,今天的文章跟大家分享下:javascript如何判斷便是是數(shù)組。 1. typeof真的那...

    lyning 評論0 收藏0
  • javascript 判斷變量數(shù)組Array

    摘要:過完春節(jié)又有好多人尋找新的機會,旁邊的人面試完就會分享一些問題,明明會的但是面試的時候,想不全,面試官不滿意這個懊惱的行為,今天的文章跟大家分享下如何判斷便是是數(shù)組。 過完春節(jié)又有好多人尋找新的機會,旁邊的人面試完就會分享一些問題,明明會的但是面試的時候,想不全,面試官不滿意...這個懊惱的行為,今天的文章跟大家分享下:javascript如何判斷便是是數(shù)組。 1. typeof真的那...

    RichardXG 評論0 收藏0
  • js面試題(上)

    https://segmentfault.com/a/11... 原型 / 構(gòu)造函數(shù) / 實例 對原型的理解 我們知道在es6之前,js沒有類和繼承的概念,js是通過原型來實現(xiàn)繼承的。在js中一個構(gòu)造函數(shù)默認(rèn)自帶有一個prototype屬性, 這個的屬性值是一個對象,同時這個prototype對象自帶有一個constructor屬性,這個屬性指向這個構(gòu)造函數(shù),同時每一個實例 都有一個__proto...

    leap_frog 評論0 收藏0
  • javascript基礎(chǔ)細(xì)節(jié)

    摘要:語法部分屬性默認(rèn)的就是,所以不必顯式指定為。不強制在每個語句結(jié)尾加,會自動加分號,但是在某些情況下會改變程序的語義,所以最好主動加。實際上,默認(rèn)有一個全局對象。 語法部分: 1.type 屬性: 默認(rèn)的 type 就是 javascript, 所以不必顯式指定 type 為 javascript。2.javascript 不強制在每個語句結(jié)尾加 ; , javascript 會自...

    wangxinarhat 評論0 收藏0
  • JavaScript檢測原始值、引用值、屬性

    摘要:檢測函數(shù)從技術(shù)上講,中的函數(shù)是引用類型,同樣存在構(gòu)造函數(shù),每個函數(shù)都是其實例,比如不好的寫法然而,這個方法亦不能跨幀使用,因為每個幀都有各自的構(gòu)造函數(shù),好在運算符也是可以用于函數(shù)的,返回。 上周寫過一篇讀書筆記《編寫可維護的JavaScript》之編程實踐,其中 第8章 避免『空比較』是博主在工作中遇坑較多的雷區(qū),所以特此把該章節(jié)重新整理分享,希望大家不再坑隊友(>﹏<)。 在 Jav...

    劉德剛 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<