回覆列表
  • 1 # 使用者7169188564904

    JavaScript中物件的建立有以下幾種方式:

    (1)使用內建物件

    (2)使用JSON符號

    (3)自定義物件構造

    一、使用內建物件

    JavaScript可用的內建物件可分為兩種:

    1,JavaScript語言原生物件(語言級物件),如String、Object、Function等;

    2,JavaScript執行期的宿主物件(環境宿主級物件),如window、document、body等。

    我們所說的使用內建物件,是指透過JavaScript語言原生物件的構造方法,例項化出一個新的物件。如:

    複製程式碼 程式碼如下:

    var str = new String("例項初始化String");

    var str1 = "直接賦值的String";

    var func = new Function("x","alert(x)");//示例初始化func

    var o = new Object();//示例初始化一個Object

    二、使用JSON符號

    (i)何謂JSON ?

    JSON (JavaScript Object

    Notation)即JavaScript物件命名,是一種輕量級的資料交換格式,易於閱讀和編寫,同時也易於及其解析和生成。它基於

    《JavaScript Programming Language, Standard ECMA-262 3rd Edition -

    December 1999》的一個子集。JSON是完全獨立於語言的文字格式,因此成為資料交換的理想格式。

    JSON作為

    JavaScript的一個自己,同時ActionScript、C、C#、ColdFusion、E、Java、JavaScript、ML、

    ObjectiveCAML、Perl、PHP、Python、Rebol、Ruby、Lua等一系列的語言都提供支援,使得JSON成為Ajax開發的

    首選方案。

    JSON有兩種構建方式,一種是採用簡單的“鍵/值對”的集合,在不同的語言中被理解為物件、記錄、結構、字典、雜湊表、有鍵列表,或者關聯陣列等,另一種採用有序的值列表,大部分語言把它理解為陣列。

    常用的建立方式是第一種,即採用“鍵/值對”集合的形式。在這種形式下,一個物件以“{”(左括號)開始,“}”(右括號)結束。每個“名稱”後跟一個“:”(冒號),“

    ‘鍵/值" 對”之間使用“,”(逗號)分隔。

    JSON具有以下特點:(1)簡單格式化的資料交換;(2)易於人們的讀寫習慣;(3)易於機器的分析和執行。

    在JavaScript中,JSON被理解為物件。透過字串形式的JSON,資料可以很方便地解析成JavaScript獨享,並進行資料的讀取傳遞。透過JSON,在一定程度上客服了JavaScript物件無法作為引數系列化傳遞的問題。

    1,簡單的JSON

    {name:"劉德華",age:"25",sex:"男"}

    2,JSON值的型別

    JSON的值可以是簡單的資料型別,例如數字、浮點、字元等,也可以是陣列及物件。例如以陣列作為member鍵值的JSON:

    {member:[{name:"劉德華"},{name:"郭富城"},{name:"張學友"},{name:"黎明"}]}

    {

    book:[{name:"三國演義"},{name:"西遊記"},{name:"水滸傳"},{name:"紅樓夢"}],

    author:[{name:"羅貫中"},{name:"吳承恩"},{name:"施耐安",{name:"曹雪芹"}}]

    }

    3,在JavaScript中使用JSON

    JSON是JavaScript原生格式,這意味著在JavaScript中處理JSON資料不需要任何特殊的API或者工具包,JavaScript預設將JSON當做一個物件處理。

    將物件傳遞給一個變數,例如:

    複製程式碼 程式碼如下:

    var somebooks = {

    book:[{name:"三國演義"},{name:"西遊記"},{name:"水滸傳"},{name:"紅樓夢"}],

    author:[{name:"羅貫中"},{name:"吳承恩"},{name:"施耐安",{name:"曹雪芹"}}]

    }

    JSON的每個“鍵”相當於物件的屬性,例如訪問book中的第一個條目,在JavaScript中,就可以簡單地使用“somebooks.book[0].name”來獲取“三國演義”這個值。

    我們不但可以將一個JSON字串轉化為物件,反過來將一個物件“編譯”為一個JSON字串,以方便JavaScript中的物件的傳輸。例如:

    複製程式碼 程式碼如下:

    var Animals = new Object();

    Animals.name = "dog";

    Animals.sex = "Male";

    Animals.age = "2";

    Animals物件無法被序列化傳輸,將Animals物件轉化為JSON字串,也就是“{name:"dog",sex:"Male",age:"2"}”。這樣,把該JSON字串作為HTTP請求的一個引數傳遞,從而達到序列化傳輸Animals物件的目的。

    (ii)JSON透過字串形式來表達JavaScript的物件。如:

    複製程式碼 程式碼如下:

    var myObject = {nickname:"my girlfried",name:"big

    pig"};

    JSON

    實際上充當了一種在JavaScript物件和字串之間實現相互轉換的協議。由於JSON的“外表”可以看成但村的字串,因此JSON在

    JavaScript的物件傳輸方面可以起到一定的作用。例如把物件strObject轉換成字串後進行傳輸,在達到目的地後透過eval方法將其還原

    成物件:

    複製程式碼 程式碼如下:

    function test (o)

    {

    alert (o.name)

    }

    var strObject = "{nickname:"my girlfriend",name:"big pig"}";

    test (eval_r("(" + strObject + ")"));

    三、自定義物件構造

    建立高階物件構造有兩種方式:使用“this”關鍵字構造、使用原型prototype構造。如:

    複製程式碼 程式碼如下:

    //使用this關鍵字定義構造的上下文屬性

    function Girl()

    {

    this.name = "big pig";

    this.age = 20;

    this.standing;

    this.bust;

    this.waist;

    this.hip;

    }

    //使用prototype

    function Girl(){}

    Girl.prototype.name = "big pig";

    Girl.prototype.age = 20;

    Girl.prototype.standing;

    Girl.prototype.bust;

    Girl.prototype.waist;

    Girl.prototype.hip;

    alert(new Girl().name);

    上例中的兩種定義在本質上沒有區別,都是定義“Girl”物件的屬性資訊。“this”與“prototype”的區別主要在於屬性訪問的順序。如:

    複製程式碼 程式碼如下:

    function Test()

    {

    this.text = function()

    {

    alert("defined by this");

    }

    }

    Test.prototype.test = function()

    {

    alert("defined by prototype");

    }

    var _o = new Test();

    _o.test();//輸出“defined by this”

    當訪問物件的屬性或者方法是,將按照搜尋原型鏈prototype

    chain的規則進行。首先查詢自身的靜態屬性、方法,繼而查詢構造上下文的可訪問屬性、方法,最後查詢構造的原型鏈。

    “this”

    與“prototype”定義的另一個不同點是屬性的佔用空間不同。使用“this”關鍵字,示例初始化時為每個例項開闢構造方法所包含的所有屬性、方法

    所需的空間,而使用“prototype”定義,由於“prototype”實際上是指向父級的一種引用,僅僅是個資料的副本,因此在初始化及儲存上都比

    “this”節約資源。

  • 中秋節和大豐收的關聯?
  • 孔雀魚頭朝下游,失去平衡的樣子,身上有很多小氣泡,怎麼辦?