JavaScript全講-必知的特性

jopen 8年前發布 | 5K 次閱讀 JavaScript開發

上篇講完JS面向對象的特性,我們今天就來聊聊它的其他特性。


JS面向對象的特性較為隱晦,真正使用也是比較少的。而今天我們要講的,卻是在實際開發中經常遇到的特性!


1. 函數式編程

多數人并不知道“函數式編程”是什么鬼!其實不用怕,要理解“函數式編程”,只需要記住一句話: 函數可以作為變量使用!  


jQuery大家肯定都有使用過,如下代碼是jQuery綁定事件的方式,正是使用了JS函數式編程的最大特性:函數可以作為變量使用

JavaScript全講-必知的特性 - Aric的個人頁面
中間提到了匿名函數,這里簡單介紹一下,匿名函數只是普通函數的變體,沒有定義函數名稱而已!但是很多文章喜歡拿它當做高級特性來講,搞得大家都覺得它好高級!其實這個特性大家一定經常用到,只是忽略了它的“藝名”而已。


2. 閉包

又是一個高大上的詞,不明所以的人立馬被嚇住!但是請注意,我們已經掌握了一個神器:函數可以作為變量使用。何懼哉?

來看閉包的實例代碼:

JavaScript全講-必知的特性 - Aric的個人頁面

函數可以作為變量使用,我在方法內部定義了一個變量,是很正常的寫法!

只不過這種寫法,又被人起了個“藝名”: 閉包


3. 回調函數

我們把函數當做變量進行傳輸,可以使用call & apply 針對函數進行調用,俗稱回調

JavaScript全講-必知的特性 - Aric的個人頁面


4.匿名自執行函數

剛才我們講到匿名函數,既然函數沒有名字,我們如何調用它呢? 來看如下偽代碼:

JavaScript全講-必知的特性 - Aric的個人頁面

也就是在匿名函數后面加上“()”即可執行該方法,但是請別著急,這樣定義JS解析器并不能解析,會報Error,所以語法上稍微變換一下,變成了鼎鼎大名的jQuery的開篇代碼

JavaScript全講-必知的特性 - Aric的個人頁面

當然你也可以使用underscore.js的方式,看起來非常精妙

JavaScript全講-必知的特性 - Aric的個人頁面


5. this關鍵字

我們經常看到在JS代碼中出現this關鍵字,由于其函數式編程的特性,this指向的對象經常令我們不解。

要理解其this關鍵字,也有一捷徑可循:this關鍵字指向的是執行者。 看如下例子:

JavaScript全講-必知的特性 - Aric的個人頁面

這里的例子都中規中矩,在實際的開發中,情景要復雜的多,所以要找到this關鍵字的指向是一個非常復雜的事情!

萬幸,由于其復雜性,很多人都不愿意使用它,特別是較為復雜的邏輯!畢竟寫出看得懂的代碼要遠遠好于高深的代碼!


以上這些特性都是“函數式編程”引申出來的話題!所以JS最大的特性無疑是函數式編程,要理解函數式編程,一定要記得:函數可以作為變量使用


本章我們都是針對其特點單獨進行講解,你一定感覺不到它的精妙之處!后期將會在其他章節中綜合講解,讓你深切感受到它的靈活優雅!


許多其他的靜態語言,目前或多或少的都引入了一些函數式編程的特性!比如Java中的callable,它大大簡化了Java的多線程開發,而最新的Java8中的Lambda表達式,完全是函數式編程的模型


講完了JS的函數式編程,接下來我們將繼續JS其他內容的講解,話題涉及設計模式,實際開發,架構等,敬請期待!


恭祝大家,2016新年快樂!

JavaScript全講-必知的特性 - Aric的個人頁面











來自: http://my.oschina.net/aricchen/blog/593618

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!