天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

Javascript isArray 數(shù)組類型檢測函數(shù)

1、typeof操作符。對于Function、String、Number、Undefined這幾種類型的對象來說,不會有什么問題,但是針對Array的對象就沒什么用途了:
Js代碼
復制代碼 代碼如下:
alert(typeof null); // "object"
alert(typeof []); // "object"

2、instanceof操作符。此操作符檢測對象的原型鏈是否指向構造函數(shù)的prototype對象,恩,聽起來不錯,應該可以解決我們的數(shù)組檢測問題:
Js代碼
復制代碼 代碼如下:
var arr = [];
alert(arr instanceof Array); // true

3、對象的constructor屬性。除了instanceof,我們還可以利用每個對象都具有constructor的屬性來判斷其類型,于是乎我們可以這樣做:
Js代碼
復制代碼 代碼如下:
var arr = [];
alert(arr.constructor == Array); // true

貌似后兩個解決方案是無懈可擊的,但真的是這樣么?天有不測風云,當你在多個frame中來回穿梭的時候,令人沮喪的問題出現(xiàn)了:
Js代碼
復制代碼 代碼如下:
var iframe = document.createElement('iframe');
document.body.appendChild(iframe);
xArray = window.frames[window.frames.length-1].Array;
var arr = new xArray(1,2,3); // [1,2,3]
// 哎呀!
arr instanceof Array; // false
// 哎呀呀!
arr.constructor === Array; // false

由于每個iframe都有一套自己的執(zhí)行環(huán)境,跨frame實例化的對象彼此是不共享原型鏈的,因此導致上述檢測代碼失效!怎么辦怎么辦??嗯,Javascript是動態(tài)語言,或許萬金油“鴨式辨型”(duck type)可以助我們一臂之力“如果它走起路來像鴨子,叫起來也像鴨子,那就當他是鴨子吧”,同理,可以檢測某些數(shù)組對象特有的能力來做判斷,這個法子已經(jīng)有人用了,比如Prototype框架,來看看它實現(xiàn)的Object.isArray方法:
Js代碼
復制代碼 代碼如下:
isArray: function(object) {
return object != null && typeof object == "object" &&
'splice' in object && 'join' in object;
}

isArray:”object,你有splice、join這兩個數(shù)組特有的方法嗎?”
object:“嗯,沒錯我有!”
isArray:“好吧,那你就是個數(shù)組了,哪怕你是冒充的, 主站蜘蛛池模板: 国产精品无码麻豆放荡AV | 欧美xx69 | 诱受H嗯啊巨肉各种play | 国产在线高清视频 | 国产精品www视频免费看 | 大伊人青草狠狠久久 | 午夜福利网国产A | 国自产拍 高清精品 | 欧美性黑吊xxx | 久久99国产精品蜜臀AV | 女人久久WWW免费人成看片 | 老熟女重囗味HDXX | 亚洲AV无码乱码在线观看浪潮 | 国产成人拍精品视频网 | 婷婷开心激情综合五月天 | 国产成人综合在线观看 | 免费果冻传媒2021在线看 | 亚洲成人三级 | 韩国精品韩国专区久久 | 久久热精品18国产 | 97无码人妻精品1国产精东影业 | 最近中文字幕2018MV高清在线 | 国模精品一区二区三区视频 | 国产一区二区在线观看免费 | 久久本道久久综合伊人 | 成人免费观看www视频 | 青青青青草 | 喜马拉雅听书免费版 | 欧美乱码伦视频免费66网 | 啊好深啊别拔就射在里面 | 2019香蕉在线观看直播视频 | 美女张开腿让男人桶爽无弹窗 | 秋霞电影网午夜鲁丝片无码 | 神电影院午夜dy888我不卡 | 久久伊人电影 | 羞羞漫画免费漫画页面在线看漫画秋蝉 | 在线播放日韩欧美亚洲日本 | 国产片MV在线观看 | 免费视频xxx| 无码精品AV久久久奶水 | 长篇高h肉爽文丝袜 |