天天躁日日躁狠狠躁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:“好吧,那你就是個數組了,哪怕你是冒充的, 主站蜘蛛池模板: 再插深点嗯好大好爽 | 国产在线精品亚洲第1页 | 袖珍人与大黑人性视频 | 色欲人妻无码AV精品一区二区 | 日日夜夜影院在线播放 | 国产一级做a爰片久久毛片男 | 色悠久久久久综合网小说 | 亚洲 中文 自拍 无码 | 无码国产欧美日韩精品 | 国产日韩高清一区二区三区 | 99精品免费久久久久久久久蜜桃 | 精品国产乱码久久久人妻 | 娇小亚裔被两个黑人 | 娇小老少配xxxxx | 久久久精品免费视频 | 97久久精品人人槡人妻人 | 最近2018年手机中文字幕 | 老色69久久九九精品高潮 | 午夜小视频免费观看 | 亚洲高清无在码在线电影 | 亚洲三级视频在线观看 | 久久xxxx| 日韩亚洲国产中文字幕欧美 | 久久婷婷五月综合色情 | 日日干夜夜爱 | 国精产品一区二区三区四区糖心 | 99在线精品国自产拍不卡 | 国产大片51精品免费观看 | 欧美 亚洲 有码中文字幕 | 超碰人人草在线视频 | 丰满五十老女人性视频 | 翁熄性放纵交换01 | 国产伦精品一区二区三区免费 | 秋霞电影网伦大理电影在线观看 | 国产电影尺度 | 东北疯狂xxxxbbbb中国 | 日韩精品欧美亚洲高清有无 | 一个人在线观看免费高清视频在线观看 | 国产高清在线观看视频 | 男人吃奶摸下弄进去好爽 | 中文字幕人成乱码熟女APP |