轉:JavaScript語言中的Literal Syntax特性

來源:互聯網
上載者:User

轉自

鳥食軒

http://www.cnblogs.com/birdshome/archive/2005/02/26/105867.html

 

JavaScript語言中的Literal Syntax特性

 

我們編寫JS常用的資料類型包括:Number、Boolean、String、Array、Function和Object。其中這裡面的Number、Boolean和String屬於簡單類型,文字方式書寫是它們的基本方式,如果用new xxx()來定義反而會讓人覺得是脫褲子打屁。 

 Number: var i = 100; i = 100.11;
 Boolean: var b = true; b = false;
 String: var str = 'this is a string.';

    對於複雜資料類型,函數、數組和對象我們怎麼辦呢?函數不用說了,都是以文本方式定義的。下面就看看數組和對象是怎麼表示的吧。假如我們有一個數組:

 var ary = new Array(6);
 ary[0] = null;
 ary[1] = 1;
 ary[2] = 'string';
 ary[3] = true;
 ary[4] = function()
 {
     return 'keke';
 };
 ary[5] = new MyObject();

    我們使用文本方式(也就是我們平時說的初始化方式)來寫這個數組它將是:

 var ary1 = [null, 1, 'string', true, function(){return 'keke';}, new MyObject()];

    比上面精簡的多吧?而且這裡數組的文本化方式還可以寫的遠比這複雜的多,比如:

   var ary2 = []; //空數組,相當於 new Array();
   var ary3 = [1,[2,[3,[4,[5,[6,[7,[8,[9,[0]]]]]]]]]];

    第三個ary3是啥數組,我也不知道了@_@。

    不對呀,怎麼ary[5]是new MyObject()呢?哦,不好意思,我們再來把MyObject樣本一下,假如它被定義為:

 function MyObject()
 {
     this.Properties1 = 1;
     this.Properties2 = '2';
     this.Properties3 = [3];
     this.toString = function()
     {
          return '[class MyObject]';
     };
 }

 MyObject.prototype.Method1 = function()
 {
     return this.Properties1 + this.Properties3[0];
 };

 MyObject.prototype.Method2 = function()
 {
     return this.Properties2;
 };

    那麼我們的var obj = new MyObject()怎麼文本化呢?其實也很簡單的了,obj的文本化定義如下:

 var obj = 
     {
         Properties1 : 1, Properties2 : '2', Properties3 : [3],
         Method1 : function(){ return this.Properties1 + this.Properties3[0];},
         Method2 : function(){ return this.Preperties2; }
     };


    這個類執行個體的直接文本化定義雖然算不上精簡,但也還不錯吧。這樣我們就可以用這個文本化類執行個體去替換ary中那個new MyObject()了。類執行個體文本化定義的文法為,用一對"{}"表示類,也就說"{}"完全等價於"new Object()"。然後"{}"內按"key:value"組織屬性和方法,key可以是任意[A-Za-z0-9_]的字元組合,甚至數字開頭都是合法的@_@,value是任何的合法的文本化JavaScript資料,最後每個索引值對用","來分隔就行了。

 

------------------------------------------------------------------

附:

在JavaScript中,Object其實就是數組,所以可以用數組賦值文法。:)

部分對象可以用以下方法遍曆Member:

for(var obj in Object){

alert(obj);

}

 

for(var obj in Object){

alert(Object[obj]);

}

就可把每個屬性的值都看到,對於屬性為Function的還能看到它的代碼.

 

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.