關於JavaScript的一些使用心得

JavaScript這門語言是LZ最喜歡的編程語言之一,爲何說喜歡呢?由於LZ認爲JavaScript的語法優美,且是動態,弱類型的腳本語言。接下來LZ將列舉出編寫JavaScript的時候的一些注意事項或者心得。編程

一、關於閉包數組

閉包是JavaScript的一個特性,什麼是閉包呢?經過字面意思,咱們可以猜到,就是封閉的一些函數的集合,也就是在閉包內的函數,是不能被外部所調用,能夠理解爲面向對象的私有方法。語法格式以下:閉包

(function(){ // coding });
咱們知道JavaScript的函數內能夠編寫函數,那麼對於閉包,咱們先定義一個匿名函數,而後再匿名函數內部編寫私有函數。

說到閉包,咱們立刻會想到JavaScript的事件綁定機制,給出下面的示例:編程語言

for(var i = 0;i < 5;i++){

   $("a").click(function(){
        console.log(i);
   });
}

當點擊a標籤輸出什麼呢?對於上面的這段代碼,若是對JavaScript不夠了解的話,立刻會說:「會輸入1,2,3,4,5」,那麼正確的結果應該是會打印5個5,不少人會問?爲何呢?在上面的這段代碼,執行完for循環的時候,i的值是5,a標籤綁定了5次click,那麼最後點擊的時候固然會輸出5個5,可是若是咱們必定要輸入1,2,3,4,5怎麼辦呢?這個時候就須要用到咱們的閉包:
for(var i = 0;i < 5;i++){ (function(index){ $("a").click(function(){ console.log(index); }); })(i); }
咱們能夠看到在循環內部click事件以前加入了閉包,這樣每次綁定都經過匿名函數將i傳給click事件,這樣點擊後就能打贏出1,2,3,4,5了。咱們能夠看到匿名函數和函數最後多了一個參數,這段代碼至關於:
(function(){ var index = i; });
二、this指針

有人說JavaScript最難的當屬this指針了,可是我不這麼認爲。當你真正理解了,也會認爲this指針不過如此。對於JavaScript的this指代的是什麼,我用一句話進行了總結:誰調用表明誰。什麼意思呢?咱們經過一段代碼來解釋。函數

function Person(id,name){ this.id = id; this.name = name; this.getId = function(){ return this.id; }; }; var person = new Person(1,"lynn"); 
以上代碼有不少this,我剛纔說了誰調用表明誰,那麼這些this是誰調用的呢?很明顯,下面new了一個Person對象,那麼就是person來調用,因此這裏的this表明的都是person。咱們知道JavaScript是動態語言,因此能夠動態的設置屬性,因此既然this表明的是person,那麼this.id天然就是給person對象增長屬性id,而且賦值爲傳入的參數,因此咱們經過person.id 就能夠獲得值爲1.

三、for和for...inthis

JavaScript的for循環和for...in循環是徹底不同的兩種循環,咱們來舉個列子說明:spa

for(var i = 0;i < 5;i++){ } for(var i in person){ }
for循環的i是索引,而for...in循環的i是對象屬性,所以若是咱們要循環一個數組的元素的時候必定要用for循環,而須要獲得對象的屬性的時候,咱們要用for...in循環,可是在for...in循環屬性的時候,JavaScript對每一個對象會加入一些內置的屬性,所以咱們只想獲得咱們本身定義的屬性,須要用到hasOwnProperty()方法,判斷是不是咱們本身定義的屬性:
for(var i in person){ if(person.hasOwnProperty(i)){ } }
相關文章
相關標籤/搜索