国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

javascript 有趣而詭異的數(shù)組

2019-11-21 01:25:26
字體:
供稿:網(wǎng)友
年前在重寫淘寶旺鋪里的會員卡腳本的時候,無意中發(fā)現(xiàn)了一個有趣的事情。代碼類似:
復(fù)制代碼 代碼如下:

var associative_array = new Array();
associative_array["one"] = "1";
associative_array["two"] = "2";
associative_array["three"] = "3";
if(associative_array.length > 0)
{ // to do}

會發(fā)現(xiàn) associative_array.length 始終等于 0,當(dāng)時有點迷惑,后來才知道這就像大家認(rèn)為 IE 中支持 CSS 屬性 display:inline-block 一樣,純屬巧合和誤解。

實際上(引自《JavaScript “Associative Arrays” Considered Harmful》):

JavaScript arrays (which are meant to be numeric) are often used to hold key/value pairs. This is bad practice. Object should be used instead.

//大意:數(shù)組只支持?jǐn)?shù)字的,鍵值對應(yīng)使用于對象上。

There is no way to specify string keys in an array constructor. //在數(shù)組構(gòu)造函數(shù)中無法定義字符串鍵值
There is no way to specify string keys in an array literal. //在數(shù)組字面量中無法定義字符串鍵值
Array.length does not count them as items. // Array.length 不會計算字符串鍵值
進(jìn)一步窺探數(shù)組:

1、數(shù)組可以根據(jù)所賦的值自動調(diào)整大小
復(fù)制代碼 代碼如下:

var ar = [];
ar[2] = 1;
alert(ar.length)

發(fā)現(xiàn)這個數(shù)組的長度為 3,就像一個經(jīng)過初始化的數(shù)組一樣。所有沒有賦值的數(shù)組對象,都將被定義為 undefined 。

擴(kuò)展閱讀:

2、可使用 “The Miller Device” 方法來判斷是否是數(shù)組

復(fù)制代碼 代碼如下:

function isArray(o) { return Object.prototype.toString.call(o) === '[object Array]';}

“The Miller Device” 的妙用不僅僅在于判斷數(shù)組:
復(fù)制代碼 代碼如下:

var is = {
types : ["Array","RegExp","Date","Number","String","Object"]
};

for(var i=0,c;c=is.types[i++];){
is[c] = (function(type){
return function(obj){
return Object.prototype.toString.call(obj) == “[object "+type+"]“;
}
})(c);
}

擴(kuò)展閱讀:

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 伊川县| 任丘市| 沿河| 扬州市| 双鸭山市| 哈尔滨市| 车致| 尚志市| 南通市| 衡山县| 九龙城区| 湄潭县| 新乡县| 吕梁市| 壶关县| 视频| 白山市| 错那县| 宜都市| 巴林右旗| 和林格尔县| 泰和县| 米脂县| 禹城市| 安西县| 太原市| 东明县| 隆化县| 马鞍山市| 布拖县| 宣化县| 清河县| 墨竹工卡县| 松阳县| 吉林市| 乃东县| 龙州县| 荔波县| 涞水县| 兰州市| 辽宁省|