學習任何知識都會有困難點.學習javascript當然也是一樣.本文總結一些學習Javascript的難點並對各個難點做些說明:
一、用系統的知識將問題具體化
我們在學習時經常會發現可以用不同的方法來實現同一個問題。例如,要為元素綁定一個點擊事件可以在HTML元素上用
當我們第二次又看到可以將一個函數傳遞給一個事件來綁定:a.onclick=f1;這時我們又會想原來綁定事件不只一種方法。
當我們第三次又看到用addachEvent("onclick",f1)這種方法綁定事件的時候,你一定會想綁定事件的方法可能不只這三種。而且做一件事沒理由要三種相同的方法,他們之間一定有不同之處?
那麼他們有什麼不同之處呢?到底綁定事件有多少種方法呢?當你發現一種方法在IE中不相容的時候你還會問這到底是為什麼?是我的文法錯誤了嗎?還是怎麼回事。一個又一個的問題結束之後你只好問自己:「天呀!我什麼時候才能學好JavaScript呢?!」。
可能這樣下去你很難學好JS。其實我還要告訴你,你離學好他不遠了,只是你不知道怎麼走。原因在哪裡?原因就是沒有系統的知識,原因就是沒有讀過《JavaScript權威指南》,他會告訴你綁定事件有四種方法,並且有兩種是基本方法,所有瀏覽器都支援他,另外還有兩種高級方法,一種是W3C標準方法,一種是IE標準方法,所以你知道為什麼IE不相容其中的一種高級方法了,對嗎?
現在事情具體化了,綁定一個事件的時候只需考慮這四種方法,你也不會再有那麼多的疑惑了。你也會覺得自己弄清楚事件了,下一步你應該去弄清楚其它問題了,你還會覺得自己在JS方面終於有進展了,當然你還會感覺到走出一個困境了。
二、必需了解JavaScript的歷史
你了解JS的歷史嗎?我當然了解,他原本不叫JavaScript,他最早不是實作在IE中的。對,說的很好,但這不是最重要的,知道這個也不會成為高手,你必須了解的更詳細,而且主要是了解功能進化方面的歷史。
就像上面,為什麼綁定事件會有那麼多的方法?為什麼獲得一個元素會有那麼多的方法?倒底是document.links[]正規一點?還是getElementsByTagName('a')正規一點?哪一個相容性比較好?還有多少這樣的方法?
要知道一個問題就夠頭痛了,十個問題你就無從下手,一百個問題你就會懷疑自己。一千個問題最後又回到那個問題「天呀!我什麼時候才能學好JavaScript」?呵呵,事情往往就是這樣。解決的方法就是具體化他,去弄清楚到底有幾種方法,為什麼又有這些方法。這些問題一定會有答案,因為JS不是外星人留下的東西,是人創造出來的,而那個人的思考也是有限的,不是嗎?
當你知道document.links[]是遺留的document方法,而且這種遺留方法一共有5個。分別是anchors[],applets[],forms[],images[],links[]的時候有些問題就消失了,當你還知道DOM標準保留了他們,你還知道所有瀏覽器都支援他們,你還知道他們就是所謂的「0級DOM」你又會走出一個「困境」。
三、JS有縱橫交錯的知識結構
JS的知識結構是橫向和縱向交錯的,這加大了理解他的難度,對這一點必需有一個清晰的認識。下面解釋一下「縱橫交錯」。
一般的知識都有橫向性。例如從大的方面JS分為核心部分和客戶端部分。這是橫向。核心部分又分為詞法結構,資料類型和值,變量,表達式和運算符,語句,物件和數組,函數,類,模組和名字空間,正規表示式。這也是橫向。
客戶端部分可以分為BOM,DOM,事件,樣式,表單等,這些也是橫向的知識結構。
一門技術很少用時間作為結構,但因為瀏覽器的發展是動態的,不同時期的瀏覽器對JS有不同程度的實現,而在不同時間針對當時瀏覽器所編寫的網頁不能因為技術的發展就不去考慮他,而且讓所有的網站都隨著技術的發展而重新編寫是不可能的,所以JS即要發展升級,也要保留向前的支援。所以就算有了更好的方法也必需保留之前的方法,就有了很多遺留的JS屬性和方法,比如“0級DOM”在新的W3CDOM中得到了保留,從某種程度來講他就是縱向的。
當對知識結構有了清楚的認識,會有一個好處就是當我要解決一個問題的時候我就能知道我要用的是哪一塊的知識。例如要得到一個元素在文件中的位置就會知道用的是DOM中元素的屬性,要得到滑鼠指標的位置就要用事件物件的屬性。要取得一個元素的參考可以用遺留的DOM也可以用W3C標準的DOM方法。這是件好事。
其實上面問題的核心就是系統化和具體化,這是我在學習過程中覺得很重要的一點。這一點確實為我解決了不少疑惑。
任何知識技術都一樣,只要你有系統化的學習過整體.你碰到問題會慢慢被解決.後會理解更加深刻的.
以上就是帶你走出學習javascript困難點的內容,更多相關文章請關注PHP中文網(m.sbmmt.com)!