<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    jasmine214--love

    只有當你的內心總是充滿快樂、美好的愿望和寧靜時,你才能擁有強壯的體魄和明朗、快樂或者寧靜的面容。
    posts - 731, comments - 60, trackbacks - 0, articles - 0

    進一步理解 javascript對象、數組和哈希表

    Posted on 2010-06-25 13:24 幻海藍夢 閱讀(188) 評論(0)  編輯  收藏 所屬分類: JS
    原文:http://www.k99k.com/javascript.html
    在javascript中,對象實際上就是一個哈希表,比如下面這個user對象:
    function user(n, a)
    {
    this.name = n;
    this.age = a;
    this.toString = function() {
    return 'Name:' + this.name + ', Age:' + this.age;
    }
    }
    var u = new user('tom', 18);
    for (var k in u) {
    alert('key: ' + k + ', value:' + u[k]);
    }
    稍作改動,使用Array對象來代替對象:
    var user = new Array();
    user['name']='tom';
    user['age']=18;
    user['toString']=function(){
    return 'Name:' + this.name + ', Age:' + this.age;
    }
    alert(user.toString());
    更簡單的寫法:
    var u = {
    'name':'tom',
    'age':18
    }
    u.toString = function(){return 'Name:' + this.name + ', Age:' + this.age;};
    alert(u.toString());
    由以上這些代碼可以看出:
    • 所有的javascript對象,包括Array對象在內實際上就是一個哈希表,屬性名稱就是哈希表的key,而屬性的值就是哈希表的值。
    • Array對象與通常意義的數組對象并不相關,通常的數組僅能通過下標來定位,而javascript中的Array卻可以像哈希表一個通過 key來定位集合中的對象。
    • 可以將一個function直接作為值賦給對象的“哈希表”。
    前端時間看了阮一峰的 《數據類型與Json格式》 一文,提到在yaml描述數據時,將所有的數據分成三種類型:
    • 第一種類型是scalar(標量),一個單獨的string或數字,比如“北京”這個單獨的詞。
    • 第二種類型是sequence(序列),若干個相關的數據按照一定順序并列在一起,又叫做array(數組)或List(列表),比如“北京, 東京”。
    • 第三種類型是map(映射),一個鍵/值對(Key/value),又稱作hash(散列)或dictionary(字典),比如“首都:北 京”。
    可能這三種類型我們都很熟悉,但文中提到的對json的四條規則卻正好剖析了javascript描述數據的方式:
    • 并列的數據之間用逗號(“,”)分隔。
    • 映射用冒號(“:”)表示。
    • 并列數據的集合(數組)用方括號('[]')表示。
    • 映射的集合(對象)用大括號(“{}”)表示。
    有了這四條規則(再加上對function的理解),對于很多看上去非常“詭異”的寫法,都可以理解了。因此,一個javascript對象,實際上就是 一個數組或是映射。
    關于數組與映射的不同,可以看下面這個例子:
    var m = {
    name:'keel',
    age:5
    }
    var a = [m,'sss',3];
    //以下請求成功定位到name屬性
    alert(m['name']);
    alert(a[0]['name']);//a[0]定位到m
    alert(a[0].name);
    //以下失敗
    alert(m[0]);//映射無法以數組下標的方式訪問
    • 從定位到成員的方法來看,映射使用key來定位其中的成員,而數組使用下標,映射無法使用下標定位,同樣數組也無法使用key(理所當然,根本 就沒有key);
    • 從表示方法來看,映射可以使用類似對象屬性的方式來訪問(如:m.name),也可以使用帶key的[]方式(如:m['name'],這是 javascript一個特例,看上去像數組,實際上仍是映射);但數組僅能使用下標的方式;
    • 從順序來看:數組是有順序的,映射是無序的;
    主站蜘蛛池模板: 精品一区二区三区免费观看| 精品亚洲福利一区二区| 嫩草影院在线播放www免费观看| 九九综合VA免费看| 我要看WWW免费看插插视频| 亚洲av鲁丝一区二区三区| 可以免费观看的毛片| 亚洲av无码av制服另类专区| 亚洲免费观看视频| 亚洲高清资源在线观看| 麻豆亚洲AV成人无码久久精品 | 国产在线精品免费aaa片| 亚洲?V无码乱码国产精品| 美女被吸屁股免费网站| 最近2019年免费中文字幕高清| 91情侣在线精品国产免费| 亚洲人和日本人jizz| 毛片免费vip会员在线看| 亚洲hairy多毛pics大全| 999久久久免费精品播放| 自拍日韩亚洲一区在线| www.91亚洲| 免费黄网站在线看| 亚洲av成人综合网| 免费在线看片网站| 免费一级毛片在线播放视频| 91午夜精品亚洲一区二区三区| 男女一边摸一边做爽的免费视频| 成人免费a级毛片| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 95免费观看体验区视频| 亚洲一区在线免费观看| 成人伊人亚洲人综合网站222| 亚洲图片中文字幕| 免费无码又爽又高潮视频 | 亚洲αv久久久噜噜噜噜噜| 51视频精品全部免费最新| 亚洲偷自精品三十六区| 亚洲午夜精品久久久久久浪潮| 色噜噜的亚洲男人的天堂| 精品亚洲永久免费精品|