天天看點

javascript你應該知道的七件事

javascript發展到今天,很高興看到她的成功。曾經好多人都這麼說:寫程式這麼多年,現在最看不懂的程式是javascript!javascript雖然是一種弱類型語言,但是她卻有着“高貴”的理論。下面是學習javascript過程中的一些小激動時刻,記錄下來,大家可以跟我一起感受。

縮略标記

在建立對象和數組的過程中可以使用縮略标記。過去,我們需要建立一個對象時,我們會這樣寫:

現在可以這樣寫:

這樣寫更加簡潔,并且不用重複寫對象名。

json資料格式

json改變了javascript存儲資料的方式,運用json,你可以使用javascript自帶的格式存儲各種複雜的資料并且不需要進行額外的轉換,json是javascript object notation的縮寫。

例如:想要描述一個樂隊的話,可以這樣寫:

javascript自帶函數(數學、數組以及字元串函數)

通讀了javascript的數學、數組和字元串函數後,意識到他們會讓程式設計變得非常友善,使用他們可以避免使用許多循環和條件。例如:當需要找到一組數中的最大數時,需要寫這樣一個循環:

可以不通過循環這樣實作:

其餘操作字元串的常用函數式split()和join()。最經典的例子可能就是利用一個函數将css的類添加到元素中。

現在的問題是,當需要在dom元素中添加一個類時,要麼是将它作為第一個類添加,要麼是将它和一個空格鍵一起加在已經存在的類前面。當删除該類時,也需要删除相應的空格。

是以,原始方程應該寫成這樣:

可以運用split()和join()函數來自動實作:

這樣操作可以保證類與空格自動分類且結果被附加在最後。

事件代理

事件使得網絡應用可以工作,他的存在,使得使用者不需要接觸核心代碼就可以使産品具有更好的可拓展性。當某一特定的元素或其上dom層的所有元素發生某一事件時,可以通過單一的處理程式對父元素進行處理來簡化事件處理過程,而不是使用大量的程式。比如說想要獲得一個連接配接清單,而且想要通過函數的調用而不是通過加載來獲得,其html實作方法如下:

通常事件處理程式是在整個連接配接中使用循環:

也可以通過一個事件處理程式來實作:

因為單擊事件發生在清單中所有的元素之上,是以你所要做的就是将節點name與需要相應事件的元素進行對比。

這種方法的好處在于可以使用單獨的事件處理程式。例如,想要在清單中動态的進行添加操作,如果使用事件處理,則不需要進行任何改變,隻需要在事件處理過程中重新配置設定處理程式并對清單重新進行循環操作就可以了。

匿名函數和子產品模式

javascript最令人煩惱的事情是變量的範圍沒有定義。任何在函數外定義的變量、函數、數組和對象都是全局的,這意味着相同頁中其他腳本都可以進行調用,因而經常出現參數被覆寫現象。

解決方法就是将變量封裝在一個匿名函數中,在定義完函數後立即調用。例如,下面将生成山歌全局變量和兩個全局函數:

該頁中其他的腳本語言如果含有名為status的變量的話就會出問題。如果将它們封裝在名為myapplication的匿名函數中,就可以解決這個問題了:

但是這樣定義使得參數在函數外不起作用,如果這正是所需要的,沒有問題。靈位可以省略定義的名字。

但是如果需要部分變量或函數可以被外部調用,則需要這樣改寫程式:為了可以調用createmember()或getmemberdetails()函數,将它們作為myapplication的屬性傳回。

這樣的用法被稱為子產品模式或單利模式。為了使函數和變量可以被外部調用,需要改變定義的文法,這很令人煩惱。而且,如果要從一個方法中調用兩一個方法,還必須在調用時加上myapplication字首。是以,更好的方法是傳回這些想要其成為全劇元素的指針,這樣還可以縮短外部調用時的使用長度。

允許配置

每當我們寫完javascript源程式并将之公布于衆時,人們總是想修改程式,有時是因為人們想進行功能拓展,但大多數時候是因為我們的程式太難于定制。

解決方法是在腳本語言中加入配置檔案,例如:

1、  在整個腳本檔案中添加一個對象作為配置檔案。

2、  在配置檔案中加入使用該腳本程式可能需要改變的所有資訊:

例如:css的id和類名稱;

            生成按鈕的字元串(比如說标簽);

            地點、區域和語言設定

大多數時候這一步放在程式設計的最後階段,起始,配置檔案就是為了使代碼更易于被其他開發人員使用和更改,這樣添加配置檔案之後就很少會有人抱怨你的代碼或者詢問他人更改過的地方。

與背景互動

javascript包含豐富的互動接口,但在進行資料處理和資料庫通路時效果不佳。通路一個web服務時,可以得到json-p格式的傳回值并在客戶機上進行大量的資料轉換。但是為什麼在已經有了伺服器并有更多的資料轉換方法和json、html格式的傳回值得時候,還要在客戶機上進行啟動緩存呢?是以,如果想要使用ajax,試着接觸一些http并編寫自己的緩存和轉換代理程式,這樣可以節約大量的事件和精力。