国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

RayKr / 1766人閱讀

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

過完春節又有好多人尋找新的機會,旁邊的人面試完就會分享一些問題,明明會的但是面試的時候,想不全,面試官不滿意...這個懊惱的行為,今天的文章跟大家分享下: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 判斷變量數組Array

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

    lyning 評論0 收藏0
  • javascript 判斷變量數組Array

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

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

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

    leap_frog 評論0 收藏0
  • javascript基礎細節

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

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

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

    劉德剛 評論0 收藏0

發表評論

0條評論

RayKr

|高級講師

TA的文章

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