摘要:將從中抽離不允許使用屬性比如來綁定一個事件處理程序。避免空比較檢測原始值如果你希望一個值是字符串?dāng)?shù)字布爾值或。當(dāng)再次發(fā)生錯誤時,這將有助于更容易地解決問題。
UI層的松耦合
將CSS從JavaScript中抽離
不允許在js中修改元素的樣式,最佳方法是控制className。
有例外:比如說定位等問題,可以修改而不使用className控制。
將JavaScript從HTML中抽離
不允許使用 on 屬性(比如onclick)來綁定一個事件處理程序。
js代碼應(yīng)當(dāng)寫在外部文件中然后引用。
將HTML從JavaScript中抽離
無法避免,使用前端模板工具,推薦使用Handlebar。
事件處理規(guī)則
規(guī)則一:隔離應(yīng)用邏輯,即把事件觸發(fā)需要執(zhí)行的代碼提取出來。
規(guī)則二:不要分發(fā)事件對象,應(yīng)用邏輯不應(yīng)當(dāng)依賴于event對象來正確完成功能。最佳的辦法是在事件處理程序中使用event(包括獲取event里的數(shù)據(jù),阻止默認(rèn)事件,阻止事件冒泡),然后將拿到的 數(shù)據(jù)在傳給應(yīng)用邏輯。
避免空比較
檢測原始值
如果你希望一個值是字符串、數(shù)字、布爾值或undefined。最佳選擇是使用typeof運算符。
typeof獨特在于即使未聲明的變量也不會報錯。未聲明的變量和值為undefined的變量都返回undefined。
字符串,typeof返回"string"。
數(shù)字,typeof返回"number"。
布爾值,typeof返回"boolean"。
undefined,typeof返回"undefined"。
若要檢測null,直接使用 === 或 !== 。
檢測引用值
最佳的選擇是使用instanceof運算符。
但instanceof不能跨frame。
函數(shù)和數(shù)組一般不用instanceof。
檢測函數(shù)
檢測函數(shù)最好的方法是使用 typeof ,因為它可以跨frame。
但在IE8和更早版本中,使用typeof檢測用于獲取DOM節(jié)點的方法(例如,getElementById等方法)會返回object而不是function。因此檢測DOM的方法的最好的方法是 in運算符(如果需要兼容IE8及以下)。例如"querySelectorAll" in document。
檢測數(shù)組
最優(yōu)雅的檢測方法:
jsfunction isArray(value){ return Object.prototype.toString.call(value) === "[object Array]"; }
檢測屬性
檢測屬性最好的方法就是 in 運算符。
如果只想檢測實例對象的某個屬性是否存在,則使用hasOwnProperty()。在IE8
將配置數(shù)據(jù)從代碼中分離出來
什么是配置數(shù)據(jù)
URL
需要展現(xiàn)給用戶的字符串
重復(fù)的值
設(shè)置
任何可能發(fā)生變更的值
抽離配置數(shù)據(jù)(重要)
保存配置數(shù)據(jù)——甚至可以提取到多帶帶的文件中
拋出自定義數(shù)據(jù)拋出錯誤就是自己留下告訴自己為什么失敗的原因
拋出錯誤最佳的地方實在工具函數(shù)中,公共接口中。
一旦修復(fù)了一個很難調(diào)試的錯誤,嘗試增加一兩個自定義錯誤。當(dāng)再次發(fā)生錯誤時,這將有助于更容易地解決問題。
如果正在 編寫代碼,思考一下:我希望「某些事情」不會發(fā)生,如果發(fā)生,我的代碼會一團糟糕。這時如果某些事情發(fā)生,就拋出一個錯誤。
如果正在編寫的代碼別人也會使用,思考一下他們使用的方式,在特定的情況下拋出錯誤。
不是你的對象不要動 不能修改的原生對象
DOM對象
瀏覽器對象(BOM)
類庫的對象(jquery)
不能修改的原則不覆蓋方法
不新增方法
不刪除方法
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/85859.html
摘要:為可恢復(fù)的錯誤使用檢查型異常,為編程錯誤使用非檢查型錯誤。檢查型異常保證你對錯誤條件提供異常處理代碼,這是一種從語言到強制你編寫健壯的代碼的一種方式,但同時會引入大量雜亂的代碼并導(dǎo)致其不可讀。在編程中選擇檢查型異常還是運行時異常。 異常處理是Java 開發(fā)中的一個重要部分。它是關(guān)乎每個應(yīng)用的一個非功能性需求,是為了處理任何錯誤狀況,比如資源不可訪問,非法輸入,空輸入等等。Java提供了...
摘要:在結(jié)對編程的模式下,可以互相監(jiān)督,高效地交流想法。通過這次的作業(yè)讓我體驗到了結(jié)對編程與個人編程的不同,和后者相比起來,前者的工作目的會更加明確,工作時間更加緊湊。 ...
摘要:會用其它人的分析結(jié)果,并付諸實踐,更偏向于執(zhí)行,通過錯誤來學(xué)習(xí)。四語言學(xué)習(xí)的方法有些人可能通過感受和觀察就能很好的學(xué)習(xí)了,比如我們所熟知的一些學(xué)霸。 小推廣講堂《60分鐘徒手?jǐn)]出Spring框架》,別只會用,干脆自己擼一個輪子吧 一 前言 1984年, 大衛(wèi)·庫伯曾在他的著作《體驗學(xué)習(xí):體驗——學(xué)習(xí)發(fā)展的源泉》提出了學(xué)習(xí)圈理論,與他認(rèn)為經(jīng)驗學(xué)習(xí)過程是由四個適應(yīng)性學(xué)習(xí)階段構(gòu)成的環(huán)形結(jié)構(gòu),...
摘要:大家好,我是冰河有句話叫做投資啥都不如投資自己的回報率高。馬上就十一國慶假期了,給小伙伴們分享下,從小白程序員到大廠高級技術(shù)專家我看過哪些技術(shù)類書籍。 大家好,我是...
閱讀 2831·2021-11-25 09:43
閱讀 980·2021-10-11 10:57
閱讀 2482·2020-12-03 17:20
閱讀 3725·2019-08-30 14:05
閱讀 2428·2019-08-29 14:00
閱讀 1997·2019-08-29 12:37
閱讀 1670·2019-08-26 11:34
閱讀 3210·2019-08-26 10:27