寫代碼的方法與思考

寫代碼的方法與思考

咱們看各類各樣的書籍,有講原理的,也有講實例的,你會發現裏面講的邏輯很是清晰,有時候你可能會困惑,他們怎麼會想到用這個方法呢。其實這就是一我的的思考過程了。面試

(1)如何製做一個單擊鼠標菜單隱現的特效

首先在準備製做一個特效前,你腦子裏就得思考整個特效的全過程(工做過程:鼠標點擊某個菜單,這個菜單若是是顯現狀態就變成隱藏,若是是隱藏的就變成顯現)。算法

知道了工做流程,下面就得解決每一步的疑問了。怎樣知道是鼠標單擊雙擊呢(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);

(2)下面試一些書中提到的方法與思想

1.只要你堅持下去,寫代碼就是那沒簡單,記住三個詞:閉包

借鑑:多閱讀,多分析,多學習一些成功的JavaScript的代碼,多逛一些JavaScript類的技術社區,論壇,博客等,多與一些技術牛人學習,借鑑其經驗和思路。

多思考:思考的深度決定了代碼的質量,所以多思考,多問幾個爲何在很大的程度上能夠提升代碼的質量

多動手練習:實踐檢驗真理

2.JavaScript的基本設計策略:架構

寫代碼的前中後時,問三個問題:作什麼?誰作?怎樣作?dom

應用程序的功能是什麼?編程語言

這個應用程序要作什麼?儘可能具體一點,假設你想要在發送Email的時候使用一個HTML表單,考慮如下問題。

    表單將包括多少域
    本身輸入Email地址仍是從一個列表中選取
    發送以前是否想要確認一下表單輸入?你打算肯定什麼內容?消息?Email地址?仍是兩個都確認
    發送Email後發生什麼事?是讓用戶轉到另一個頁面仍是什麼也不用作
    多思考諸如此類的問題,你將會獲得一個很是好的計劃

訪問者是誰

使用什麼瀏覽器
使用什麼瀏覽設備,顯示器分辨率
使用哪一種類型的網絡鏈接
應用程序中的JavaScript方法
應用程序要解決什麼問題,可否實現我要的功能
儘量的重複使用代碼,從一個地方粘貼到另外一個地方可否使用
按時間順序定義函數
每一個函數執行一個單一的操做
使用盡量多的局部變量

3.編程的首要原則(s)是什麼?

學習一項知識,必須問本身三個重要問題:

  • 它的本質是什麼。
  • 它的第一原則是什麼。
  • 它的知識結構是怎樣的。

先弄清你的問題是什麼!弄清問題永遠是問題解決過程當中的第一步和最重要的一步。代碼只是工具,不是手段。

不知道怎麼最好地解決你手頭的問題(注:需求、架構、算法,技術選型,etc..),寫上一萬坨代碼也是浪費比特。知道何時不應編碼。

要把知識梳理成系統的結構,要讓頭腦中的知識層次清楚

(3)我的體會

1.學習知識時,一章一章學的時候,感受挺有收穫,也挺容易的。跟着實例,或者按照別人教的方法更是感受到很是有成就感,以爲都懂了,可是要求你脫離資料,獨自解決問題時,你老是會犯難。

  • 爲何會出現這種狀況?

短暫的記憶,未通過驗證的自我良好感受是具備欺騙性的

  • 如何解決這種問題?

那就是找點問題來問問本身,看看本身是否是真真的牢固的掌握了,仍是隻是自我良好的感受而已。經過測試立馬就知道本身的能力如何,把本身的問題給暴露出來,因此測試仍是挺有用的。

2.重要的事情優先。儘可能避免雜事騷擾,不重要的事情能不作就不作。

3.學習東西必定得多問本身幾個問題,尤爲是那些你一看就明白

爲何這種解法是對的? 
爲何那種解法是錯的? 
爲何這種解法不是最優的? 
證實爲何沒有更優的解法?
這個東西有什麼用,可以解決什麼問題,還只是好玩而已?

若是你感受本身JavaScript學的不錯了,不妨本身考考本身,驗證驗證有沒有自欺欺人。

如何實現閉包?
爲何事件有冒泡捕獲?
瀏覽器之間有何差別?
何爲dom,bom,有什麼區別?
JavaScript的function原理是什麼?
瀏覽器有那些JavaScript引擎?
是否定識!、||、三元操做符、單鏈式寫法、申明變量的縮寫方法、惰性載入?
如何判斷瀏覽器是否支持HTML5?
如何開發出跨設備,兼容性的代碼?
如何在不一樣瀏覽器中調試代碼?
DOM的默認事件、事件模型、事件委託、阻止默認事件、冒泡事件的方式等。
JS變量提高、匿名函數、原型繼承、做用域、閉包機制等。
有哪些js設計模式

學習編程就是學習一種思考方式,學習看透事物本質的一種鍛鍊,只有不斷學習代碼才能知道怎樣寫出更好的代碼,沒事多問問本身問題。專一,少些浮躁,堅決信念,才能走的跟高更遠。

相關文章
相關標籤/搜索