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

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

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

    資料整理

     

    JSON 入門與JavaScript提高(原創)

    原文 Quick guide to somewhat advanced JavaScript tour of some OO features
    出處 http://www.sergiopereira.com/articles/advjs.html


    什么是JSON? JavaScript Object Notation -------javascript對象符號,一個Ajax中砰然出現的新話題.其實它就是javascript中申明對象的方法。讓我們來看一個示例
    var?myPet?=?{?
    ???color:?'black',?
    ???leg_count:?
    4,?
    ???communicate:?
    function(repeatCount){?
    for(i=0;i<repeatCount;i++)?alert('Woof!');}
    ?
    }
    ;

    這里我們就創建了一個對象引用,這個對象包含了2個屬性(color,leg_count)和一個方法(communicate),
    在myPet對象的列表中不難看出,這些屬性和方法之間都是用逗號","分隔開來的。屬性很好理解,而方法的創建則是由一個匿名function標記的。

    在該對象被創建以后并且以myPet變量聲明了以后我們就可以這樣使用了:
    alert('my?pet?is?'?+?myPet.color);
    alert('my?pet?has?'?
    +?myPet.legCount?+?'?legs');
    //if?you?are?a?dog,?bark?three?times:
    myPet.communicate(3);

    大家可以看到,JSON可以漂亮地應用到javascript中任何一個地方,作為function參數、返回值、服務器響應...

    你理解了嗎?function同樣也是一個對象。
    ---------------------------------------------------------------
    或許JS程序員中有些人從來就不這么認為,但是function確實也是一個Object。下面我們可以做個實驗來驗證一下,將你的function給你的另一個function做為參數傳遞,就傳一個String一樣。
    var?myDog?=?{
    ????bark:?
    function(){
    ????????alert('Woof
    !');
    ????}

    }
    ;

    var?myCat?=?{
    ????meow:?
    function(){
    ????????alert('I?am?a?lazy?cat.?I?will?not?meow?
    for?you.');
    ????}

    }
    ;
    ?
    function?annoyThePet(petFunction){
    ????
    //let's?see?what?the?pet?can?do
    ????petFunction();
    }


    //annoy?the?dog:
    annoyThePet(myDog.bark);
    //annoy?the?cat:
    annoyThePet(myCat.meow);

    在這里我們傳遞了myDog.bark和myCat.meow給annoyThePet。注意它們后面都沒有帶括號"()",如果不這樣做的話我們傳遞的將不是"方法",而是該方法的返回值(在此例中為"Undefine")。

    如果你想我的懶貓學狗狗叫,你可以這樣做:
    myCat.meow?=?myDog.bark;
    myCat.meow();?
    //alerts?'Woof!'

    ?
    Arrays, items 和對象成員object members
    請看下面2行

    var?a?=?new?Array();
    var?b?=?[];

    ?

    你可以在array中添加items:

    var?a?=?['first',?'second',?'third'];
    var?v1?=?a[0];
    var?v2?=?a[1];
    var?v3?=?a[2];

    但是你在聲明時對索引不做數量限制,你將可以通過它的名字訪問這個JS對象中的任何成員,就象這樣,創建一個空的對象,然后就可以不停地添加了:

    var?obj?=?{};?//new,?empty?object
    obj['member_1']?=?'this?is?the?member?value';
    obj['flag_2']?
    =?false;
    obj['some_function']?
    =?function(){?/*?do?something?*/};
    ????????????
    等價于:

    var?obj?=?{
    ????member_1:'
    this?is?the?member?value',
    ????flag_2:?
    false,
    ????some_function:?
    function(){?/*?do?something?*/}
    }
    ;

    在JS中,對象和關系型數組(hashes)兩個概念通常是沒有區別,下面的這兩行代碼是等價的:


    obj.some_function();
    obj['some_function']();


    等了這么久,我可以擁有自己的Class了么?
    OO的強大力量來自于類Class。當然了我們的JavaScript同樣也可以做到這一點,請看吧:

    //defining?a?new?class?called?Pet
    var?Pet?=?function(petName,?age){
    ????
    this.name?=?petName;
    ????
    this.age?=?age;
    }
    ;

    //let's?create?an?object?of?the?Pet?class
    var?famousDog?=?new?Pet('Santa\'s?Little?Helper',?15);
    alert('This?pet?is?called?'?
    +?famousDog.name);

    但是我們如何能夠將方法加到我們的Pet? Class中來呢。我們可以為我們所有的類定義一個prototype屬性。prototype屬性其實也是一個對象,它包含一個類所擁有的一切其他對象。甚至默認JS類(Date,String,Number)也可以擁有prototype對象,使得各種新的方法和屬性能擴充其中,讓基礎類獲得更多的特性。
    Pet.prototype.communicate?=?function(){?
    ????alert('I?
    do?not?know?what?I?should?say,?but?my?name?is?'?+?this.name);
    }
    ;
    別忘了,我們得先導入 prototype.js才行。
    ps: 個人認為象下面創建類,可能更簡潔一點。
    var?Pet?=?Class.create();
    Pet.prototype?
    =?{
    ????
    //our?'constructor'
    ????initialize:?function(petName,?age){
    ????????
    this.name?=?petName;
    ????????
    this.age?=?age;
    ????}
    ,
    ????
    ????communicate:?
    function(){
    ????????alert('I?
    do?not?know?what?I?should?say,?but?my?name?is?'?+?this.name);
    ????}

    }
    ;????

    將方法做為參數
    如果你沒有使用過支持closure的語言,象Ruby,C#,你會發現象這樣的語法真是太有趣了:
    var?myArray?=?['first',?'second',?'third'];
    myArray.each(?
    function(item,?index){
    ????alert('The?item?
    in?the?position?#'?+?index?+?'?is:'?+?item);
    }
    );

    未完帶續.........

    posted on 2006-07-29 15:13 謝瑋 閱讀(576) 評論(2)  編輯  收藏 所屬分類: 流行框架javascriptWeb

    評論

    # re: JSON 入門與JavaScript提高(原創) 2008-09-17 09:24 fgh

    fgh  回復  更多評論   

    # re: JSON 入門與JavaScript提高(原創) 2008-09-17 09:26 lp

    The dogs and cats are interesting.  回復  更多評論   

    導航

    統計

    常用鏈接

    留言簿(1)

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    主站蜘蛛池模板: 亚洲av日韩av无码av| 国产成人亚洲精品电影| 免费的一级片网站| 特级毛片全部免费播放a一级| 久久亚洲高清综合| 国产精品入口麻豆免费观看| 亚洲av无码偷拍在线观看| 精品国产_亚洲人成在线高清| 91在线品视觉盛宴免费| 成人无码区免费A片视频WWW| 午夜亚洲国产精品福利| 亚洲AV无码成人专区片在线观看| 毛片免费vip会员在线看| 两性色午夜视频免费网| 在线aⅴ亚洲中文字幕| 国产亚洲精品a在线无码| 女人被男人桶得好爽免费视频 | 亚洲最大的成人网站| 国产亚洲精品a在线观看| 最近中文字幕无吗高清免费视频| 国产久爱免费精品视频 | 久久久久亚洲AV无码专区首JN| 国产免费人人看大香伊| 亚洲一区二区免费视频| 三年片免费高清版 | 一个人看的www免费高清 | 亚洲美女视频免费| 久久精品成人免费观看97| 亚洲第一第二第三第四第五第六| 中文字幕亚洲色图| 亚洲尤码不卡AV麻豆| 免费在线观看日韩| 成年男女男精品免费视频网站 | 国产色爽免费无码视频| 美女视频黄.免费网址| 亚洲国产视频久久| 亚洲精品综合久久中文字幕 | 久久精品国产亚洲一区二区| 免费不卡中文字幕在线| 国产精品成人免费视频网站京东 | 免费鲁丝片一级观看|