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

JavaScript 七大技巧(二)

 更新時(shí)間:2015年12月13日 15:16:02   投稿:mrr  
我寫(xiě)JavaScript代碼已經(jīng)很久了,都記不起是什么年代開(kāi)始的了。本文給大家分享javascript七大技巧(二),對(duì)javascript技巧相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧

上篇文章給大家介紹了JavaScript 七大技巧(二),寫(xiě)JavaScript代碼已經(jīng)很久了,都記不起是什么年代開(kāi)始的了。對(duì)于JavaScript這種語(yǔ)言近幾年所取得的成就,我感到非常的興奮;我很幸運(yùn)也是這些成就的獲益者。我寫(xiě)了不少的文章,章節(jié),還有一本專(zhuān)門(mén)討論它的書(shū),然而,我現(xiàn)在依然能發(fā)現(xiàn)一些關(guān)于這種語(yǔ)言的新知識(shí)。下面的描述的就是過(guò)去讓我不由得發(fā)出“啊!”的感嘆的編程技巧,這些技巧你應(yīng)該現(xiàn)在就試試,而不是等著未來(lái)的某個(gè)時(shí)候偶然的發(fā)現(xiàn)它們。

var band = {
   "name":"The Red Hot Chili Peppers",
   "members":[
   {
   "name":"Anthony Kiedis",
   "role":"lead vocals"
   },
   {
   "name":"Michael 'Flea' Balzary",
   "role":"bass guitar, trumpet, backing vocals"
   },
   {
   "name":"Chad Smith",
   "role":"drums,percussion"
   },
   {
   "name":"John Frusciante",
   "role":"Lead Guitar"
   }
   ],
   "year":""
   }

你可以在JavaScript里直接使用JSON,可以把它封裝在函數(shù)里,甚至作為一個(gè)API的返回值形式。  我們把這稱(chēng)作 JSON-P ,很多的API都使用這種形式?! ∧憧梢哉{(diào)用一個(gè)數(shù)據(jù)提供源,在script代碼里直接返回 JSON-P 數(shù)據(jù):  

01  
12  

這是調(diào)用 Delicious 網(wǎng)站提供的 Web service 功能,獲得JSON格式的最近的無(wú)序書(shū)簽列表。  

基本上,JSON是最輕便的描述復(fù)雜數(shù)據(jù)結(jié)構(gòu)的方法,而且它能在瀏覽器里運(yùn)行?! ?br />

你甚至可以在PHP里用 json_decode() 函數(shù)來(lái)運(yùn)行它?! ?br />

JavaScript的自帶函數(shù)(Math, Array 和 String)  

讓我感到驚奇的一個(gè)事情是,當(dāng)我研究了JavaScript里的math和String函數(shù)后,發(fā)現(xiàn)它們能極大的簡(jiǎn)化我的編程勞動(dòng)。  

使用它們,你可以省去復(fù)雜的循環(huán)處理和條件判斷?! ?br />

例如,當(dāng)我需要實(shí)現(xiàn)一個(gè)功能,找出數(shù)字?jǐn)?shù)組里最大的一個(gè)數(shù)時(shí),我過(guò)去是這樣寫(xiě)出這個(gè)循環(huán)的,就像下面:

 var numbers =
  [,,,,];
   var max = ;
   for(var i=;i
   if(numbers[i]
  > max){
   max = numbers[i];
   }
   }
   alert(max);

  我們不用循環(huán)也能實(shí)現(xiàn): 

 var numbers =

  [,,,,];
   numbers.sort(function(a,b){return b -
  a});
   alert(numbers[]);

  需要注意的是,你不能對(duì)一個(gè)數(shù)字字符數(shù)組進(jìn)行 sort() ,因?yàn)檫@種情況下它只會(huì)按照字母順序進(jìn)行排序?! ?br /> 如果你想知道更多的用法,可以閱讀 這篇不錯(cuò)的關(guān)于 sort() 的文章?! ?br />

再有一個(gè)有意思的函數(shù)就是 Math.max()。  

這個(gè)函數(shù)返回參數(shù)里的數(shù)字里最大的一個(gè)數(shù)字:

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

因?yàn)檫@個(gè)函數(shù)能夠校驗(yàn)數(shù)字,并返回其中最大的一個(gè),所以你可以用它來(lái)測(cè)試瀏覽器對(duì)某個(gè)特性的支持情況:

 var scrollTop=
  Math.max(
   doc.documentElement.scrollTop,
   doc.body.scrollTop
   );

  這個(gè)是用來(lái)解決IE問(wèn)題的。你可以獲得當(dāng)前頁(yè)面的 scrollTop 值,但是根據(jù)頁(yè)面上 DOCTYPE 的不同,上面這兩個(gè)屬性中只有一個(gè)會(huì)存放這個(gè)值,而另外一個(gè)屬性會(huì)是 undefined,所以你可以通過(guò)使用 Math.max() 得到這個(gè)數(shù)?! ?/p>

閱讀這篇文章你會(huì)得到更多的關(guān)于使用數(shù)學(xué)函數(shù)來(lái)簡(jiǎn)化JavaScript的知識(shí)?! ?/p>

另外有一對(duì)非常有用的操作字符串的函數(shù)是 split() 和 join()。我想最有代表性的例子應(yīng)該是,寫(xiě)一個(gè)功能,用來(lái)給頁(yè)面元素附加CSS樣式?! ?/p>

是這樣的,當(dāng)你給頁(yè)面元素附加一個(gè)CSS class時(shí),要么它是這個(gè)元素的第一個(gè)CSS class,或者是它已經(jīng)有了一些class  , 需要在已有的class后加上一個(gè)空格,然后追加上這個(gè)class。而當(dāng)你要去掉這個(gè)class時(shí),你也需要去掉這個(gè)class前面的空格(這個(gè)在過(guò)去非常重要,因?yàn)橛行├系臑g覽器不認(rèn)識(shí)后面跟著空格的class)?!?/p>

 于是,原始的寫(xiě)法會(huì)是這樣:

 function addclass(elm,newclass){
   var c =
  elm.className;
   elm.className = (c === '') ? newclass : c+' '+newclass;
   }  你可以使用 split() 和 join() 函數(shù)自動(dòng)完成這個(gè)任務(wù): function addclass(elm,newclass){
   var classes =
  elm.className.split(' ');
   classes.push(newclass);
   elm.className = classes.join(' ');
   }  

這會(huì)確保所有的class都被空格分隔,而且你要追加的class正好放在最后。

是個(gè)短視的行為。工具包可以幫你快速的開(kāi)發(fā),但如果你不深入理解JavaScript,你也會(huì)做錯(cuò)事。

用 JSON 形式存儲(chǔ)數(shù)據(jù)

  在我發(fā)現(xiàn)JSON之前,我使用各種瘋狂的方法把數(shù)據(jù)存貯在JavaScript固有的數(shù)據(jù)類(lèi)型里面,例如:數(shù)組,字符串,中間夾雜著容易進(jìn)行拆分的標(biāo)志符號(hào)以及其它的令人討厭的東西。

  Douglas Crockford 發(fā)明了JSON 之后,一切全變了。

  使用JSON,你可以使用JavaScript自有功能把數(shù)據(jù)存貯成復(fù)雜的格式,而且不需要再做其它的額外轉(zhuǎn)換,直接可以訪(fǎng)問(wèn)使用。

  JSON 是 “JavaScript Object Notation” 的縮寫(xiě),它用到了上面提到的兩種簡(jiǎn)寫(xiě)方法。

以上內(nèi)容是小編給大家分享的javascript七大技巧,希望大家喜歡。

相關(guān)文章

  • 一個(gè)用js實(shí)現(xiàn)的頁(yè)內(nèi)搜索代碼

    一個(gè)用js實(shí)現(xiàn)的頁(yè)內(nèi)搜索代碼

    一個(gè)用js實(shí)現(xiàn)的頁(yè)內(nèi)搜索代碼...
    2007-05-05
  • javascript編程開(kāi)發(fā)中取色器及封裝$函數(shù)用法示例

    javascript編程開(kāi)發(fā)中取色器及封裝$函數(shù)用法示例

    這篇文章主要介紹了javascript編程開(kāi)發(fā)中取色器及封裝$函數(shù),結(jié)合實(shí)例形式分析了javascript封裝$函數(shù)及數(shù)值運(yùn)算、頁(yè)面元素動(dòng)態(tài)操作實(shí)現(xiàn)取色器功能相關(guān)技巧,需要的朋友可以參考下
    2017-08-08
  • js中setTimeout()與clearTimeout()用法實(shí)例淺析

    js中setTimeout()與clearTimeout()用法實(shí)例淺析

    這篇文章主要介紹了js中setTimeout()與clearTimeout()用法,以實(shí)例形式分析了setTimeout()與clearTimeout()的功能與使用技巧,需要的朋友可以參考下
    2015-05-05
  • IE和Firefox下event事件雜談

    IE和Firefox下event事件雜談

    如果在使用javascript的時(shí)候涉及到event處理,就需要知道event在不同的瀏覽器中的差異。
    2009-12-12
  • Javascript設(shè)計(jì)模式之觀(guān)察者模式的多個(gè)實(shí)現(xiàn)版本實(shí)例

    Javascript設(shè)計(jì)模式之觀(guān)察者模式的多個(gè)實(shí)現(xiàn)版本實(shí)例

    這篇文章主要介紹了Javascript設(shè)計(jì)模式之觀(guān)察者模式的多個(gè)實(shí)現(xiàn)版本實(shí)例,本文給出3種實(shí)現(xiàn)版本代碼,同時(shí)給出了Jquery實(shí)現(xiàn)版本,需要的朋友可以參考下
    2015-03-03
  • JavaScript中運(yùn)算符規(guī)則和隱式類(lèi)型轉(zhuǎn)換示例詳解

    JavaScript中運(yùn)算符規(guī)則和隱式類(lèi)型轉(zhuǎn)換示例詳解

    JavaScript中運(yùn)算符規(guī)則的隱式類(lèi)型轉(zhuǎn)換是什么? 這是每個(gè)學(xué)習(xí)Javascript的新手們都應(yīng)該知道的一個(gè)問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于JavaScript中運(yùn)算符規(guī)則和隱式類(lèi)型轉(zhuǎn)換的相關(guān)資料,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-09-09
  • 解決前端跨域問(wèn)題方案匯總

    解決前端跨域問(wèn)題方案匯總

    這篇文章主要介紹了解決前端跨域問(wèn)題8種方案的相關(guān)資料,需要的朋友可以參考下
    2016-11-11
  • 利用babel將es6語(yǔ)法轉(zhuǎn)es5的簡(jiǎn)單示例

    利用babel將es6語(yǔ)法轉(zhuǎn)es5的簡(jiǎn)單示例

    Babel是一個(gè)廣泛使用的轉(zhuǎn)碼器,babel可以將ES6代碼完美地轉(zhuǎn)換為ES5代碼,所以下面這篇文章就來(lái)給大家詳細(xì)介紹了關(guān)于利用babel將es6語(yǔ)法轉(zhuǎn)es5的相關(guān)資料,文章通過(guò)示例介紹的非常詳細(xì),需要的朋友可以參考下。
    2017-12-12
  • 在Typescript中如何使用for...in詳解

    在Typescript中如何使用for...in詳解

    這篇文章主要給大家介紹了關(guān)于在Typescript中如何使用for...in的相關(guān)資料,以及TypeScript中使用for...in遍歷對(duì)象屬性會(huì)報(bào)錯(cuò)的解決辦法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-03-03
  • JavaScript中的Promise詳解

    JavaScript中的Promise詳解

    現(xiàn)在網(wǎng)上有非常多的Promise文章,但都是給你一堆代碼,或者某些核心代碼,讓你看完之后感覺(jué),嗯,很厲害,但還是不知所云,不知其所以然。那么本文真正從一個(gè)小白開(kāi)始帶你深入淺出,一步一步實(shí)現(xiàn)自己的 Promise,這種自己造輪子的過(guò)程一定是進(jìn)步最快的過(guò)程,快上車(chē)開(kāi)始吧
    2022-11-11

最新評(píng)論