<output id="r87xx"></output>
    1. 
      
      <mark id="r87xx"><thead id="r87xx"><input id="r87xx"></input></thead></mark>
        •   

               當(dāng)前位置:首頁(yè)>管理咨詢>如保學(xué)好JavaScript?初學(xué)者應(yīng)注意的七個(gè)細(xì)節(jié) 查詢:
               
          如保學(xué)好JavaScript?初學(xué)者應(yīng)注意的七個(gè)細(xì)節(jié)

          每種語(yǔ)言都有它特別的地方,對(duì)于JavaScript來(lái)說(shuō),使用var就可以聲明任意類型的變量,這門腳本語(yǔ)言看起來(lái)很簡(jiǎn)單,然而想要寫出優(yōu)雅的代碼卻是需要不斷積累經(jīng)驗(yàn)的。本文利列舉了JavaScript初學(xué)者應(yīng)該注意的七個(gè)細(xì)節(jié),與大家分享。

          一、簡(jiǎn)化代碼

          JavaScript定義對(duì)象和數(shù)組非常簡(jiǎn)單,我們想要?jiǎng)?chuàng)建一個(gè)對(duì)象,一般是這樣寫的:

          varcar=newObject();

          car.colour="red";

          car.wheels=4;

          car.hubcaps="spinning";

          car.age=4;

          下面的寫法可以達(dá)到同樣的效果:

          varcar={

          colour:"red",

          wheels:4,

          hubcaps:"spinning",

          age:4

          }

          后面的寫法要短得多,而且你不需要重復(fù)寫對(duì)象名稱。

          另外對(duì)于數(shù)組同樣有簡(jiǎn)潔的寫法,過(guò)去我們聲明數(shù)組是這樣寫的:

          varmoviesThatNeedBetterWriters=newArray(

          "Transformers","Transformers2","Avatar","IndianaJones4"

          );

          更簡(jiǎn)潔的寫法是:

          varmoviesThatNeedBetterWriters=[

          "Transformers","Transformers2","Avatar","IndianaJones4"

          ];

          對(duì)于數(shù)組,還有關(guān)聯(lián)數(shù)組這樣一個(gè)特別的東西。你會(huì)發(fā)現(xiàn)很多代碼是這樣定義對(duì)象的:

          varcar=newArray();

          car["colour"]="red";

          car["wheels"]=4;

          car["hubcaps"]="spinning";

          car["age"]=4;

          這太瘋狂了,不要覺(jué)得困惑,“關(guān)聯(lián)數(shù)組”只是對(duì)象的一個(gè)別名而已。

          另外一個(gè)簡(jiǎn)化代碼的方法是使用三元運(yùn)算符,舉個(gè)例子:

          vardirection;

          if(x200){

          direction=1;

          }else{

          direction=-1;

          }

          我們可以使用如下的代碼替換這種寫法:

          vardirection=x200?1:-1;

          二、使用JSON作為數(shù)據(jù)格式

          偉大的DouglasCrockford發(fā)明了JSON數(shù)據(jù)格式來(lái)存儲(chǔ)數(shù)據(jù),你可以使用原生的javascript方法來(lái)存儲(chǔ)復(fù)雜的數(shù)據(jù)而不需要進(jìn)行任何額外的轉(zhuǎn)換,例如:

          varband={

          "name":"TheRedHotChiliPeppers",

          "members":[

          {

          "name":"AnthonyKiedis",

          "role":"leadvocals"

          },

          {

          "name":"Michael"Flea"Balzary",

          "role":"bassguitar,trumpet,backingvocals"

          },

          {

          "name":"ChadSmith",

          "role":"drums,percussion"

          },

          {

          "name":"JohnFrusciante",

          "role":"LeadGuitar"

          }

          ],

          "year":"2009"

          }

          你可以使用在JavaScript中直接使用JSON,甚至作為API返回的一種格式,在許多的API中被應(yīng)用,例如:

          divid="delicious"divscript

          functiondelicious(o){

          varout="ul";

          for(vari=0;io.length;i++){

          out+="liahref=""+o[i].u+"""+

          o[i].d+"ali";

          }

          out+="ul";

          document.getElementById("delicious").innerHTML=out;

          }

          cript

          scriptsrc="?count=15callback=delicious"cript

          這里調(diào)用delicious的Web服務(wù)獲取最新書簽,以JSON格式返回,然后將它們顯示成無(wú)序列表的形式。

          從本質(zhì)上講,JSON是用于描述復(fù)雜的數(shù)據(jù)最輕量級(jí)的方式,而且直接它運(yùn)行在瀏覽器中。你甚至可以在PHP中調(diào)用json_decode()函數(shù)來(lái)使用它。

          三、盡量使用JavaScript原生函數(shù)

          要找一組數(shù)字中的最大數(shù),我們可能會(huì)寫一個(gè)循環(huán),例如:

          varnumbers=[3,342,23,22,124];

          varmax=0;

          for(vari=0;inumbers.length;i++){

          if(numbers[i]max){

          max=numbers[i];

          }

          }

          alert(max);

          其實(shí),不用循環(huán)可以實(shí)現(xiàn)同樣的功能:

          varnumbers=[3,342,23,22,124];

          numbers.sort(function(a,b){returnb-a});

          alert(numbers[0]);

          而最簡(jiǎn)潔的寫法是:

          Math.max(12,123,3,2,433,4);returns433

          你甚至可以使用Math.max來(lái)檢測(cè)瀏覽器支持哪個(gè)屬性:

          varscrollTop=Math.max(

          doc.documentElement.scrollTop,

          doc.body.scrollTop

          );

          如果你想給一個(gè)元素增加class樣式,可能原始的寫法是這樣的:

          functionaddclass(elm,newclass){

          varc=elm.className;

          elm.className=(c==="")?newclass:c+""+newclass;

          而更優(yōu)雅的寫法是:

          functionaddclass(elm,newclass){

          varclasses=elm.className.split("");

          classes.push(newclass);

          elm.className=classes.join("");

          }

          四、事件委托

          事件是JavaScript非常重要的一部分。我們想給一個(gè)列表中的鏈接綁定點(diǎn)擊事件,一般的做法是寫一個(gè)循環(huán),給每個(gè)鏈接對(duì)象綁定事件,HTML代碼如下:

          h2GreatWebresourcesh2

          ulid="resources"

          liahref=""OperaWebStandardsCurriculumali

          liahref=""Sitepointali

          liahref=""AListApartali

          liahref=""YUIBlogali

          liahref=""Blameitonthevoicesali

          liahref=""Oddlyspecificali

          ul

          腳本如下:

          Classiceventhandlingexample

          (function(){

          varresources=document.getElementById("resources");

          varlinks=resources.getElementsByTagName("a");

          varall=links.length;

          for(vari=0;iall;i++){

          Attachalistenertoeachlink

          links[i].addEventListener("click",handler,false);

          };

          functionhandler(e){

          varx=e.target;Getthelinkthatwasclicked

          alert(x);

          e.preventDefault();

          };

          })();

          更合理的寫法是只給列表的父對(duì)象綁定事件,代碼如下:

          (function(){

          varresources=document.getElementById("resources");

          resources.addEventListener("click",handler,false);

          functionhandler(e){

          varx=e.target;getthelinktha

          if(x.nodeName.toLowerCase()==="a"){

          alert("Eventdelegation:"+x);

          e.preventDefault();

          }

          };

          })();

          五、匿名函數(shù)

          關(guān)于JavaScript的最頭疼的事情之一是,它的變量沒(méi)有特定的作用范圍。一般情況下,任何變量,函數(shù),數(shù)組或?qū)ο蠖际侨中?,這意味著在同一頁(yè)上的其他腳本可以訪問(wèn)并覆蓋它們。解決方法是把變量封裝在一個(gè)匿名函數(shù)中。例如,下面的定義將產(chǎn)生三個(gè)全局變量和和兩個(gè)全局函數(shù):

          varname="Chris";

          varage="34";

          varstatus="single";

          functioncreateMember(){

          [...]

          }

          functiongetMemberDetails(){

          [...]

          }

          封裝后如下:

          varmyApplication=function(){

          varname="Chris";

          varage="34";

          varstatus="single";

          return{

          createMember:function(){

          [...]

          },

          getMemberDetails:function(){

          [...]

          }

          }

          }();

          myApplication.createMember()and

          myApplication.getMemberDetails()nowworks.

          這被稱為單體模式,是JavaScript設(shè)計(jì)模式的一種,這種模式在YUI中用得非常多,改進(jìn)的寫法是:

          varmyApplication=function(){

          varname="Chris";

          varage="34";

          varstatus="single";

          functioncreateMember(){

          [...]

          }

          functiongetMemberDetails(){

          [...]

          }

          return{

          create:createMember,

          get:getMemberDetails

          }

          }();

          myApplication.get()andmyApplication.create()nowwork.

          六、代碼可配置

          你寫的代碼如果想讓別人更容易進(jìn)行使用或者修改,則需要可配置,解決方案是在你寫的腳本中增加一個(gè)配置對(duì)象。要點(diǎn)如下:

          1、在你的腳本中新增一個(gè)叫configuration的對(duì)象。

          2、在配置對(duì)象中存放所有其它人可能想要去改變的東西,例如CSS的ID、class名稱、語(yǔ)言等等。

          3、返回這個(gè)對(duì)象,作為公共屬性以便其它人可以進(jìn)行重寫。

          七、代碼兼容性

          兼容性是初學(xué)者容易忽略的部分,通常學(xué)習(xí)Javascript的時(shí)候都是在某個(gè)固定的瀏覽器中進(jìn)行測(cè)試,而這個(gè)瀏覽器很有可能就是IE,這是非常致命的,因?yàn)槟壳皫状笾髁鳛g覽器中偏偏I(xiàn)E對(duì)標(biāo)準(zhǔn)的支持是最差的。最終用戶看到的結(jié)果也許就是,你寫的代碼在某個(gè)瀏覽器無(wú)法正確運(yùn)行。你應(yīng)該把你的代碼在主流的瀏覽器中都測(cè)試一下,這也許很費(fèi)時(shí)間,但是應(yīng)該這樣做。


          地下室樁頭防水構(gòu)造節(jié)點(diǎn)圖腳手架剛性連墻件構(gòu)造示意圖及施工節(jié)點(diǎn)圖
          幕墻轉(zhuǎn)角節(jié)點(diǎn)詳圖1如何選一扇好木門 三招助你找到好產(chǎn)品
          建筑工程項(xiàng)目管理成本控制之我見(jiàn)高碾壓混凝土拱壩施工工藝
          《合同法》總則的主要內(nèi)容:合同訂立河道水毀修復(fù)工程施工方案(堤防)
          項(xiàng)目經(jīng)理,項(xiàng)目的靈魂《合同法》總則的主要內(nèi)容:合同終止
          讓管理者對(duì)“管理壞行為”說(shuō)“再見(jiàn)”建筑工程模板工程施工方案(33頁(yè))
          梁、柱接頭節(jié)點(diǎn)平面及剖面圖南水北調(diào)渠道混凝土襯砌施工技術(shù)方案
          信息發(fā)布:廣州名易軟件有限公司 http://m.jetlc.com
          • 勁爆價(jià):
            不限功能
            不限用戶
            1998元/年

          • 微信客服

            <output id="r87xx"></output>
          1. 
            
            <mark id="r87xx"><thead id="r87xx"><input id="r87xx"></input></thead></mark>
              • 台湾无码一区二区 | 色色导航网站 | 日韩高跟视频在线播放 | 国产精品久久久久久欧 | 狠狠婷婷| 国产女人18毛片水18精 | 青青草免费视频在线 | 最近中文字幕免费mv第一季歌词在线观看 | 一区二区亚洲 | 精品一区二区三区四区 |