咱們看各類各樣的書籍,有講原理的,也有講實例的,你會發現裏面講的邏輯很是清晰,有時候你可能會困惑,他們怎麼會想到用這個方法呢。其實這就是一我的的思考過程了。面試
首先在準備製做一個特效前,你腦子裏就得思考整個特效的全過程(工做過程:鼠標點擊某個菜單,這個菜單若是是顯現狀態就變成隱藏,若是是隱藏的就變成顯現)。算法
知道了工做流程,下面就得解決每一步的疑問了。怎樣知道是鼠標單擊雙擊呢(click鼠標單擊事件),怎樣知道點的那個菜單呢(event對象),又怎樣判斷菜單目前的狀態呢(設定條件並判斷),狀態表現出來是利用了標籤屬性的什麼原理呢(display:none block;或者visibility:hidden visible;會佔用原來的空間)。編程
最後應該怎樣來實現這個全過程:用編程語言將思考的過程描述出來。設計模式
HTML代碼瀏覽器
<div id="menu"> <ul> <li></li> <li></li> <li></li> </ul> </div>
JavaScript代碼網絡
(1)給每一個對象綁定事件 var oLis=document.querySelectorAll("#menu>ul>li"); oLis.forEach(function (item) { item.addEventListener('click', function(){ item.style.display =(item.style.display == "none" )? "block" : "none"; }, false); }); (2)事件委託(一次綁定,永久使用) var oDiv=document.querySelectorAll("#menu"); function () { oDiv.addEventListener('click', function(event){ event=event ||window.event; target=event.target||event.srcElement; target.style.display =(target.style.display == "none" )? "block" : "none"; }, false);
1.只要你堅持下去,寫代碼就是那沒簡單,記住三個詞:閉包
借鑑:多閱讀,多分析,多學習一些成功的JavaScript的代碼,多逛一些JavaScript類的技術社區,論壇,博客等,多與一些技術牛人學習,借鑑其經驗和思路。 多思考:思考的深度決定了代碼的質量,所以多思考,多問幾個爲何在很大的程度上能夠提升代碼的質量 多動手練習:實踐檢驗真理
2.JavaScript的基本設計策略:架構
寫代碼的前中後時,問三個問題:作什麼?誰作?怎樣作?dom
應用程序的功能是什麼?編程語言
這個應用程序要作什麼?儘可能具體一點,假設你想要在發送Email的時候使用一個HTML表單,考慮如下問題。 表單將包括多少域 本身輸入Email地址仍是從一個列表中選取 發送以前是否想要確認一下表單輸入?你打算肯定什麼內容?消息?Email地址?仍是兩個都確認 發送Email後發生什麼事?是讓用戶轉到另一個頁面仍是什麼也不用作 多思考諸如此類的問題,你將會獲得一個很是好的計劃
訪問者是誰
使用什麼瀏覽器 使用什麼瀏覽設備,顯示器分辨率 使用哪一種類型的網絡鏈接 應用程序中的JavaScript方法 應用程序要解決什麼問題,可否實現我要的功能 儘量的重複使用代碼,從一個地方粘貼到另外一個地方可否使用 按時間順序定義函數 每一個函數執行一個單一的操做 使用盡量多的局部變量
3.編程的首要原則(s)是什麼?
學習一項知識,必須問本身三個重要問題:
先弄清你的問題是什麼!弄清問題永遠是問題解決過程當中的第一步和最重要的一步。代碼只是工具,不是手段。
不知道怎麼最好地解決你手頭的問題(注:需求、架構、算法,技術選型,etc..),寫上一萬坨代碼也是浪費比特。知道何時不應編碼。
要把知識梳理成系統的結構,要讓頭腦中的知識層次清楚
1.學習知識時,一章一章學的時候,感受挺有收穫,也挺容易的。跟着實例,或者按照別人教的方法更是感受到很是有成就感,以爲都懂了,可是要求你脫離資料,獨自解決問題時,你老是會犯難。
短暫的記憶,未通過驗證的自我良好感受是具備欺騙性的
那就是找點問題來問問本身,看看本身是否是真真的牢固的掌握了,仍是隻是自我良好的感受而已。經過測試立馬就知道本身的能力如何,把本身的問題給暴露出來,因此測試仍是挺有用的。
2.重要的事情優先。儘可能避免雜事騷擾,不重要的事情能不作就不作。
3.學習東西必定得多問本身幾個問題,尤爲是那些你一看就明白
爲何這種解法是對的? 爲何那種解法是錯的? 爲何這種解法不是最優的? 證實爲何沒有更優的解法? 這個東西有什麼用,可以解決什麼問題,還只是好玩而已?
若是你感受本身JavaScript學的不錯了,不妨本身考考本身,驗證驗證有沒有自欺欺人。
如何實現閉包? 爲何事件有冒泡捕獲? 瀏覽器之間有何差別? 何爲dom,bom,有什麼區別? JavaScript的function原理是什麼? 瀏覽器有那些JavaScript引擎? 是否定識!、||、三元操做符、單鏈式寫法、申明變量的縮寫方法、惰性載入? 如何判斷瀏覽器是否支持HTML5? 如何開發出跨設備,兼容性的代碼? 如何在不一樣瀏覽器中調試代碼? DOM的默認事件、事件模型、事件委託、阻止默認事件、冒泡事件的方式等。 JS變量提高、匿名函數、原型繼承、做用域、閉包機制等。 有哪些js設計模式
學習編程就是學習一種思考方式,學習看透事物本質的一種鍛鍊,只有不斷學習代碼才能知道怎樣寫出更好的代碼,沒事多問問本身問題。專一,少些浮躁,堅決信念,才能走的跟高更遠。