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

Javascript isArray 數組類型檢測函數

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

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

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

貌似后兩個解決方案是無懈可擊的,但真的是這樣么?天有不測風云,當你在多個frame中來回穿梭的時候,令人沮喪的問題出現了:
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都有一套自己的執行環境,跨frame實例化的對象彼此是不共享原型鏈的,因此導致上述檢測代碼失效!怎么辦怎么辦??嗯,Javascript是動態語言,或許萬金油“鴨式辨型”(duck type)可以助我們一臂之力“如果它走起路來像鴨子,叫起來也像鴨子,那就當他是鴨子吧”,同理,可以檢測某些數組對象特有的能力來做判斷,這個法子已經有人用了,比如Prototype框架,來看看它實現的Object.isArray方法:
Js代碼
復制代碼 代碼如下:
isArray: function(object) {
return object != null && typeof object == "object" &&
'splice' in object && 'join' in object;
}

isArray:”object,你有splice、join這兩個數組特有的方法嗎?”
object:“嗯,沒錯我有!”
isArray:“好吧,那你就是個數組了,哪怕你是冒充的, 主站蜘蛛池模板: 国产成人免费a在线资源 | 久久青草在线视频精品 | 色窝窝777欧美午夜精品影院 | 爽爽窝窝午夜精品一区二区 | 双性诱受灌满哭求饶BL | 亚州AV人片一区二区三区99久 | 亚洲国产免费观看视频 | 一区二区三区无码高清视频 | 精品人妻无码一区二区三区蜜桃臀 | 午夜精品国产自在现线拍 | 日韩伦理电影秋霞影院 | 一二三四韩国免费观看 | 九色PORNY蝌蚪视频首页 | 中国老头oldday tv | 国产人妻精品久久久久久很牛 | 冰山高冷受被c到哭np双性 | 国产99青草全福视在线 | 一一本之道高清视频在线观看中文字幕 | 杨幂视频在线观看1分30秒 | 99久久免热在线观看 | 国产精品线路一线路二 | 鬼灭之刃花街篇免费樱花动漫 | 国产精品亚洲污污网站入口 | 在线观看免费精品国产 | 亚洲国产成人爱AV在线播放丿 | 久久无码AV亚洲精品色午夜 | 一本久道视频无线视频 | 内射少妇三洞齐开 | 日本中文字幕伊人成中文字幕 | 日本xxx在线观看免费播放 | 99爱视频在线观看 | 国产精品一库二库三库 | 特级做A爰片毛片免费看108 | 果冻传媒在线观看网站 | 和尚轮流澡到高潮H | 強姧伦久久久久久久久 | 狠狠色狠狠色综合日日92 | 日韩欧美中文字幕在线 | 欧美成人猛片aaaaaaa | 3d在线看小舞被躁视频 | 女人高潮了拔出来了她什么感觉 |