一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

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

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

2、instanceof操作符。此操作符檢測(cè)對(duì)象的原型鏈?zhǔn)欠裰赶驑?gòu)造函數(shù)的prototype對(duì)象,恩,聽起來不錯(cuò),應(yīng)該可以解決我們的數(shù)組檢測(cè)問題:
Js代碼
復(fù)制代碼 代碼如下:
var arr = [];
alert(arr instanceof Array); // true

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

貌似后兩個(gè)解決方案是無懈可擊的,但真的是這樣么?天有不測(cè)風(fēng)云,當(dāng)你在多個(gè)frame中來回穿梭的時(shí)候,令人沮喪的問題出現(xiàn)了:
Js代碼
復(fù)制代碼 代碼如下:
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

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

isArray:”object,你有splice、join這兩個(gè)數(shù)組特有的方法嗎?”
object:“嗯,沒錯(cuò)我有!”
isArray:“好吧,那你就是個(gè)數(shù)組了,哪怕你是冒充的, 主站蜘蛛池模板: 婷婷亚洲综合五月天小说在线 | 午夜视频免费在线 | 欧美色综合图片区19p | 激情五月激情综合 | 高清视频黄色录像免费 | 国产高清在线精品一区二区三区 | 婷婷色网站 | 国语对白一区二区三区 | 91久久国产成人免费观看资源 | 91po国产在线高清福利 | 国产欧美日韩高清专区ho | 婷婷六月在线 | 美女胸又大又黄的网站 | 久久伊人久久亚洲综合 | 日韩一区二区三区免费 | 国产美女在线免费观看 | 91视频国产91久久久 | 九九干| 2020国产成人久久精品 | 免费人成a大片在线观看动漫 | 日韩经典欧美精品一区 | 91精品久久一区二区三区 | 国产精品欧美亚洲韩国日本久久 | 美女黄网站在线观看 | 国产一区二区免费不卡在线播放 | 国产欧美日韩不卡一区二区三区 | 亚洲国产精品一区二区三区久久 | 91小视频在线观看 | 国产夫妻av | 永久黄网站色视频免费 | 国产精品 主播精选 网红 | 毛片黄片免费看 | 国产免费美女视频 | 高清一区二区三区 | 亚洲成a人片在线v观看 | 色www亚洲| 九九视频精品全部免费播放 | 亚洲午夜视频在线 | 91久久香蕉青青草原娱乐 | 精品国产一区二区三区免费 | 激情文学小说区另类小说同性 |