欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

javascript 面向?qū)ο缶幊?聊聊對(duì)象的事

 更新時(shí)間:2009年09月17日 23:24:18   作者:  
javascript是基于對(duì)象的編程語言。從window到document,從方法到類,從object到Array都是對(duì)象。
先看一下JSON(javascript object notation)對(duì)象,JSON是一種腳本操作時(shí)常用的數(shù)據(jù)交換格式對(duì)象,相對(duì)于XML來說JSON是一種比較輕量級(jí)的格式,在一些intelligence的IDE中還可以方便的通過點(diǎn)操作JSON對(duì)象中的成員。

      JSON是一種鍵/值對(duì)方式來描述內(nèi)部成員的格式,其內(nèi)部成員可以是幾乎任何一種類型的對(duì)象,當(dāng)然也可以是方法、類、數(shù)組,也可以是另外一個(gè)JSON對(duì)象。

    var student = {
      Name: "張三",
      Age: 20,
      Hobby: "讀書",
      Books: [
        {
          BookName : "C#" ,
          Price : 70
        },
        {
          BookName : "Java" ,
          Price : 70
        },
        {
          BookName : "Javascript" ,
          Price : 80
        }
      ]
    };

      上面代碼用JSON對(duì)象描述了一個(gè)學(xué)生的信息,他有姓名、年齡、愛好、書集等。在訪問該學(xué)生對(duì)象時(shí),可以通過student變量來操作學(xué)生的信息。

    var stuInfo = "姓名:" + student.Name +
           ",年齡:" + student.Age +
           ",愛好:" + student.Hobby +
           ",擁有的書:" +
                      student.Books[0].BookName + "、" +
           student.Books[1].BookName + "、" +
                      student.Books[2].BookName;
     alert(stuInfo);

      這樣的操作方式風(fēng)格和C#也非常相像。以上的代碼是靜態(tài)的構(gòu)造出了學(xué)生對(duì)象,學(xué)生對(duì)象的結(jié)構(gòu)就確定了。在其它的編程語言中一般對(duì)象結(jié)構(gòu)一旦確定就不能很方便的進(jìn)行修改,但是在javascript中的對(duì)象結(jié)構(gòu)也可以方便的進(jìn)行改動(dòng)。下面為student對(duì)象添加一個(gè)Introduce方法來做自我介紹。

    student.Introduce = function() {
      var stuInfo = "姓名:" + this.Name +
             ",年齡:" + this.Age +
             ",愛好:" + this.Hobby +
             ",擁有的書:" +
             this.Books[0].BookName + "、" +
             this.Books[1].BookName + "、" +
             this.Books[2].BookName;
      alert(stuInfo)
    };
    student.Introduce();

      student對(duì)象原來并沒有Introduce方法,第一次為student.Introduce賦值會(huì)在student對(duì)象中創(chuàng)建一個(gè)新的成員,后面如果再為student.Introduce賦值則會(huì)覆蓋上一次所賦的值。當(dāng)然我們這的值是一個(gè)function。也可以用類似索引的方式來添加成員。

    student["Introduce"] = function() {
     ……
    };
 
    student.Introduce();

當(dāng)然添加的成員也可以刪除掉。刪除掉之后則成為undefined,再訪問該成員時(shí)則不支持。

    delete student.Introduce;
    student.Introduce();
 

        image

        javascript是弱類型的語言,有的時(shí)候即使有IDE的輔助也不能很清楚知道當(dāng)前所操作對(duì)象的成員,可能會(huì)需要對(duì)當(dāng)前對(duì)象的屬性進(jìn)行查詢,這時(shí)候我們可以使用for循環(huán)來完成。

    for (var key in student) {
      document.write(key + " : " + student[key] + "<br />");
    };

        image

      對(duì)student對(duì)象進(jìn)行遍歷時(shí),是對(duì)student的成員進(jìn)行遍歷,這里的key則對(duì)應(yīng)student對(duì)象中的每一個(gè)成員屬性名稱。student[key]則是對(duì)student某個(gè)成員進(jìn)行訪問。如果想調(diào)用student的Introduce方法也可以用索引的方式,student[“Introduce”]()。

      上面簡單的聊了聊JSON對(duì)象,總的來說JSON是很方便的數(shù)據(jù)打包方式。javascript中的其它的對(duì)象,不論是瀏覽器對(duì)象,還是自定義類型所創(chuàng)建的對(duì)象或者是數(shù)組等等,它們也都具有JSON對(duì)象類似的操作方式。我們可以直接用索引的方式為window添加成員,我們也可以為數(shù)組添加字符串形式的下標(biāo)把它當(dāng)成Hashtable來操作。

    window["Hi"] = function() {
      alert("helloworld!");
    };
    window["Hi"]();
 
    var array = [];
    array["一"] = "A";
    array["二"] = "B";
    array["三"] = "C";
    array["四"] = "D";
    alert(array["一"] + array["二"] + array["三"] + array["四"]);

      把數(shù)組當(dāng)成Hashtable來操作時(shí),要注意,并非是為數(shù)組添加數(shù)組元素,而是在數(shù)組對(duì)象中添加新的屬性成員。而且如果for(var key in array)循環(huán)遍歷數(shù)組對(duì)象的話,key得到的卻不是array對(duì)象的屬性名稱,而是數(shù)組元素的索引號(hào)。

下一次聊聊function。

相關(guān)文章

  • 實(shí)現(xiàn)JavaScript中繼承的三種方式

    實(shí)現(xiàn)JavaScript中繼承的三種方式

    在JavaScript中,繼承可以通過三種手法實(shí)現(xiàn)原型鏈繼承 使用apply、call方法 對(duì)象實(shí)例間的繼承。
    2009-10-10
  • JavaScript 繼承詳解(四)

    JavaScript 繼承詳解(四)

    在本章中,我們將分析Douglas Crockford關(guān)于JavaScript繼承的一個(gè)實(shí)現(xiàn)
    2009-07-07
  • javascript 面向?qū)ο缶幊? function是方法(函數(shù))

    javascript 面向?qū)ο缶幊? function是方法(函數(shù))

    在進(jìn)行編程時(shí),必免不了要碰到復(fù)雜的功能。初學(xué)者最怕復(fù)雜的功能,因?yàn)椴荒軌蚝芎玫倪M(jìn)行功能邊界劃分,只能一大串if、循環(huán)加case堆疊在一起,結(jié)果出來的程序自己看著暈,別人看著更暈。
    2009-09-09
  • javascript面向?qū)ο笾?定義類

    javascript面向?qū)ο笾?定義類

    javascript中的類多數(shù)是用函數(shù)function表示的,當(dāng)然后來大多采用了json格式的定義。
    2011-02-02
  • js類后臺(tái)管理菜單類-MenuSwitch

    js類后臺(tái)管理菜單類-MenuSwitch

    js類后臺(tái)管理菜單類-MenuSwitch...
    2007-09-09
  • 寫自已的js類庫需要的核心代碼

    寫自已的js類庫需要的核心代碼

    眾所周知,用jQuery的extend方法,可以很方便的實(shí)現(xiàn)繼承和對(duì)象拷貝,我們可以把它拿過來自己用
    2012-07-07
  • JavaScript 面向?qū)ο笾臻g

    JavaScript 面向?qū)ο笾臻g

    如果寫一堆function難免會(huì)出現(xiàn)變量或函數(shù)的命名沖突,應(yīng)用了命名空間這種情況就從此杜絕了,而且代碼易于管理。
    2010-05-05
  • 最新評(píng)論