四虎精品视频-四虎精品成人免费网站-四虎黄色网-四虎国产视频-国产免费91-国产蜜臀97一区二区三区

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:“好吧,那你就是個數組了,哪怕你是冒充的, 主站蜘蛛池模板: 大森元贵| 想要女朋友菲律宾| 真实游戏在线| 古天乐电影全部作品最新| 学籍证明| 欲望之城 电影| 慕思成| 妹妹扮演的角色| 男同志gay免费视频| 韩漫画未删减男同| 南口1937| 张开泰演过的电视剧| 团结就是力量歌词电子版| 巴洛波拉| 公司辞退员工的合法流程及赔偿 | naruto鸣人雏田r18| 秋霞影视| 大时代电视剧剧情介绍| 鬼迷心窍 歌词| 何玲| 上门女婿电影完整版免费| 山东教育电视台直播在线观看| 转正意见评语| 四大纸飞机的折法| 追凶电影| 血色樱花演员表| 情人意大利| 七上语文背诵清单表| 女生宿舍2012| 大众点评开放平台| 电影儿媳| 夜之女王 电影| 第一财经公司与行业回放| 欧美亚洲欧美| 好好说再见| 牛的交配视频| 男操女视频免费| gale harold| 魔影| 大团圆李静张娴| 罪后真相|