色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

JavaScript語(yǔ)言中的Literal Syntax特性分析

我剛開(kāi)始學(xué)習(xí)JavaScript的時(shí)候,老是會(huì)被JavaScript里的一些莫名其妙的語(yǔ)法形式搞的糊里糊涂的。而且也不知道到底它支持了多少那些莫名其妙的語(yǔ)法形式?現(xiàn)在通過(guò)這個(gè)幾個(gè)月的深入了解,算是把它們弄得比較清楚了,所以下面就來(lái)說(shuō)說(shuō)JS的Literal Syntax特性。

    JavaScript語(yǔ)言的文本化的特性?My God,難道有哪門(mén)語(yǔ)言的編寫(xiě)不是使用文本嗎?不使用文本還能用啥?用意識(shí)流嗎?真是faint哈。

    雖然我們的每種語(yǔ)言都使用文本來(lái)表示,說(shuō)遠(yuǎn)點(diǎn)asm是文本的吧,BASIC是文本的吧,C/C++、C#、Java啥的都是文本吧。這沒(méi)有錯(cuò),它們的語(yǔ)言表達(dá)都是文本形式,可是它們卻不能使用文本來(lái)表示所有內(nèi)容。簡(jiǎn)單類(lèi)型比如數(shù)字啊字符串啊還行,但是C#或Java可以用文本表示一個(gè)對(duì)象實(shí)例嗎(不是用一堆定義語(yǔ)句,然后再new個(gè)對(duì)象實(shí)例哦)?顯然是不行的,然而JavaScript卻提供了對(duì)所有數(shù)據(jù)類(lèi)型包括復(fù)雜對(duì)象的文本化書(shū)寫(xiě)方式。

    我們編寫(xiě)JS常用的數(shù)據(jù)類(lèi)型包括:Number、Boolean、String、Array、Function和Object。其中這里面的Number、Boolean和String屬于簡(jiǎn)單類(lèi)型,文字方式書(shū)寫(xiě)是它們的基本方式,如果用new xxx()來(lái)定義反而會(huì)讓人覺(jué)得是脫褲子打屁。   Number: var i = 100; i = 100.11;
 Boolean: 
var b = true; b = false;
 String: 
var str = 'this is a string.';


    對(duì)于復(fù)雜數(shù)據(jù)類(lèi)型,函數(shù)、數(shù)組和對(duì)象我們?cè)趺崔k呢?函數(shù)不用說(shuō)了,都是以文本方式定義的。下面就看看數(shù)組和對(duì)象是怎么表示的吧。假如我們有一個(gè)數(shù)組:

 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();


    我們使用文本方式(也就是我們平時(shí)說(shuō)的初始化方式)來(lái)寫(xiě)這個(gè)數(shù)組它將是:

 var ary1 = [null1, 'string', truefunction(){return 'keke';}, new MyObject()];


    比上面精簡(jiǎn)的多吧?而且這里數(shù)組的文本化方式還可以寫(xiě)的遠(yuǎn)比這復(fù)雜的多,比如:

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


    第三個(gè)ary3是啥數(shù)組,我也不知道了@_@。

    不對(duì)呀,怎么ary[5]是new MyObject()呢?哦,不好意思,我們?cè)賮?lái)把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()怎么文本化呢?其實(shí)也很簡(jiǎn)單的了,obj的文本化定義如下:

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


    這個(gè)類(lèi)實(shí)例的直接文本化定義雖然算不上精簡(jiǎn),但也還不錯(cuò)吧。這樣我們就可以用這個(gè)文本化類(lèi)實(shí)例去替換ary中那個(gè)new MyObject()了。類(lèi)實(shí)例文本化定義的語(yǔ)法為,用一對(duì)"{}"表示類(lèi),也就說(shuō)"{}"完全等價(jià)于"new Object()"。然后"{}"內(nèi)按"key:value"組織屬性和方法,key可以是任意[A-Za-z0-9_]的字符組合,甚至數(shù)字開(kāi)頭都是合法的@_@,value是任何的合法的文本化JavaScript數(shù)據(jù),最后每個(gè)鍵值對(duì)用","來(lái)分隔就行了。

JavaScript技術(shù)JavaScript語(yǔ)言中的Literal Syntax特性分析,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 塔河县| 泸西县| 磐安县| 都匀市| 建阳市| 南投县| 新巴尔虎右旗| 棋牌| 犍为县| 石林| 上虞市| 罗定市| 扶风县| 松溪县| 贵州省| 湄潭县| 错那县| 东莞市| 潮安县| 沈阳市| 昔阳县| 西城区| 大关县| 东山县| 嵩明县| 和林格尔县| 乌海市| 宾川县| 双牌县| 高雄市| 双鸭山市| 白沙| 兰考县| 西乡县| 托里县| 长丰县| 开封市| 静安区| 阿拉善左旗| 江山市| 津南区|