如何編寫可維護的物件導向JavaScript代碼

 英文原文:How to Write Maintainable OO JavaScript Code  能夠寫出可維護的物件導向 JavaScript 代碼不僅可以節約金錢,還能讓你很受歡迎。不信?有可能你自己或者其他什麼人有一天會回來重用你的代碼。如果能盡量讓這個經曆不那麼痛苦,就可以節省不少 時間。地球人都知道,時間就是金錢。同樣的,你也會因為幫某人省去了頭疼的過程而獲得他的偏愛。但是,在開始探索如何編寫可維護的物件導向 JavaScript

Javascript 編程風格

  Douglas Crockford 是 Javascript 權威,Json 格式就是他的發明。  去年 11 月他有一個演講(Youtube),談到了好的 Javascript 編程風格是什麼。  我非常推薦這個演講,它不僅有助於學習 Javascript,而且能讓你心情舒暢,因為 Crockford 講得很幽默,時不時讓聽眾會心一笑。  下面,我根據這個演講和 Crockford 編寫的代碼規範,總結一下"Javascript 編程風格"。  所謂"編程風格"(programming

深入理解JavaScript系列(47):對象建立模式(上篇)

介紹本篇主要是介紹建立對象方面的模式,利用各種技巧可以極大地避免了錯誤或者可以編寫出非常精簡的代碼。模式1:命名空間(namespace)命名空間可以減少全域命名所需的數量,避免命名衝突或過度。一般我們在進行對象層級定義的時候,經常是這樣的:var app = app || {}; app.moduleA = app.moduleA || {}; app.moduleA.subModule = app.moduleA.subModule || {}; app.moduleA.subModule.

JS 抽象類別

6.7  實現抽象類別6.7.1  抽象類別和虛函數虛函數是類成員中的概念,是只做了一個聲明而未實現的方法,具有虛函數的類就稱之為抽象類別,這些虛函數在衍生類別中才被實現。抽象類別是不能執行個體化的,因為其中的虛函數並不是一個完整的函數,不能被調用。所以抽象類別一般只作為基類被派生以後再使用。 和類的繼承一樣,JavaScript並沒有任何機制用於支援抽象類別。但利用JavaScript語言本身的性質,可以實現自己的抽象類別。 6.7.2 

JavaScript – 1.事件 + 2.變數 + 3.判斷變數初始化 + 4.函數的聲明 + 5.匿名函數

1.事件在超連結的點擊裡執行JavaScript:<a href="javascript:alert('哈哈')">哈哈</a>JavaScript中也有事件的概念,當按鈕被點擊的時候也可以執行 JavaScript: • <input type="button" onclick="alert(99)" value="久久"/> •

Javascript指令碼導致IE瀏覽器運行緩慢

Nicholas教您如何避免Javascript指令碼導致IE和其他瀏覽器運行緩慢在 Web開發的時候,經常會遇到的一種情況就是瀏覽器提示指令碼已耗用時間過長,停止還 是繼續,無論你選擇什麼,相信你都會想盡一切辦法讓這個對話方塊遠離你的使用者們。可你是否知道,這些不同的瀏覽器究竟是如何判斷,哪些指令碼處於“失控”狀態 嗎?本文作者,就從Internet Explorer、Firefox、Safari、Chrome和Opera五種瀏覽器,分析了這個情況出現的原因。【原文標題】What

深入理解JavaScript系列(49):Function模式(上篇)

介紹本篇主要是介紹Function方面使用的一些技巧(上篇),利用Function特性可以編寫出很多非常有意思的代碼,本篇主要包括:回調模式、設定物件、返回函數、分布程式、柯裡化(Currying)。回呼函數在JavaScript中,當一個函數A作為另外一個函數B的其中一個參數時,則函數A稱為回呼函數,即A可以在函數B的周期內執行(開始、中間、結束時均可)。舉例來說,有一個函數用於產生nodevar complexComputation = function () { /*

如何提升JavaScript迴圈的運行速度

Nicholas為您講解如何提升JavaScript迴圈的運行速度!根 據Nicholas的說法,有四種代碼會拖慢指令碼的運行,並最終導致指令碼失控。分別是次數過多的同步迴圈、龐大的函數體、不恰當的遞迴和不合理的DOM調用。這篇著重講第一個原因。最後給出了一個開發模式,替換傳統的迴圈結構,可以完全避免指令碼失控的狀況發生。【原文標題】Speed up your JavaScript, Part 1 【原文作者】Nicholas C. Zakas 在我上一篇文章 (譯文 )

深入理解JavaScript系列(50):Function模式(下篇)

介紹本篇我們介紹的一些模式稱為初始化模式和效能模式,主要是用在初始化以及提高效能方面,一些模式之前已經提到過,這裡只是做一下總結。立即執行的函數在本系列第4篇的《立即調用的函數運算式》中,我們已經對類似的函數進行過詳細的描述,這裡我們只是再舉兩個簡單的例子做一下總結。// 聲明完函數以後,立即執行該函數 (function () { console.log('watch out!'); } ()); //這種方式聲明的函數,也可以立即執行 !function () {

如何提升JavaScript的遞迴效率

Nicholas為您講解如何提升JavaScript的遞迴效率! 影響JavaScript效能的另外一個殺手就是遞迴,在上一節中提到採用 memoization技術可以最佳化計算數值的遞迴函式,但memoization不是萬能的,不是所有的遞迴函式都可以用memoization技術優 化,本文介紹了這些情況,並介紹瞭解決辦法,就是將遞迴轉換為迭代,同時需要注意,本文末尾介紹的方案不是最終的方案,還需要和上一節最佳化迴圈的方案綜合 起來才能達到最佳效果。 【原文】Speed up your

深入理解JavaScript系列(結局篇)

介紹最近幾個月忙得實在是不可開交,終於把《深入理解JavaScript系列》的最後兩篇“補全”了,所謂的全是不準確的,因為很多內容都沒有寫呢, 比如高效能、Ajax安全、DOM詳解、JavaScript架構等等。但因為經曆所限,加上大叔希望接下來寫點其它東西,所以此篇文字就暫且當前完結篇

深入理解JavaScript系列(39):設計模式之適配器模式

介紹適配器模式(Adapter)是將一個類(對象)的介面(方法或屬性)轉化成客戶希望的另外一個介面(方法或屬性),適配器模式使得原本由於介面不相容而不能一起工作的那些類(對象)可以一些工作。速成封裝器(wrapper)。本文我們來舉一個例子,鴨子(Dock)有飛(fly)和嘎嘎叫(quack)的行為,而火雞雖然也有飛(fly)的行為,但是其叫聲是咯咯的

深入理解JavaScript系列(38):設計模式之職責鏈模式

介紹職責鏈模式(Chain of responsibility)是使多個對象都有機會處理請求,從而避免請求的寄件者和接受者之間的耦合關係。將這個對象連成一條鏈,並沿著這條鏈傳遞該請求,直到有一個對象處理他為止。也就是說,請求以後,從第一個對象開始,鏈中收到請求的對象要麼親自處理它,要麼轉寄給鏈中的下一個候選者。提交請求的對象並不明確知道哪一個對象 將會處理它——也就是該請求有一個隱式的接受者(implicit

深入理解JavaScript系列(41):設計模式之模板方法

介紹模板方法(TemplateMethod)定義了一個操作中的演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變一個演算法的結構即可重定義該演算法的某些特定步驟。模板方法是一種代碼複用的基本技術,在類庫中尤為重要,因為他們提取了類庫中的公用行為。模板方法導致一種反向的控制結構,這種結構就是傳說中的 “好萊塢法則”,即“別找找我們,我們找你”,這指的是父類調用一個類的操作,而不是相反。具體體現是物件導向編程程式設計語言裡的抽象類別(以及其中的抽象方

javascript變數聲明

zhuanzi:http://qingbob.com/blog/%E8%B0%88javascript%E5%8F%98%E9%87%8F%E5%A3%B0%E6%98%8E之前的面試中遇到過一道面試題var a =10;(function(){console.log(a);var a =20;})()短短5行代碼log的結果是什嗎?如果把var a =

深入理解JavaScript系列(40):設計模式之組合模式

介紹組合模式(Composite)將對象組合成樹形結構以表示“部分-整體”的階層,組合模式使得使用者對單個對象和組合對象的使用具有一致性。常見的情境有asp.net裡的控制項機制(即control裡可以包含子control,可以遞迴操作、添加、刪除子control),類似的還有 DOM的機制,一個DOM節點可以包含子節點,不管是父節點還是子節點都有添加、刪除、遍曆子節點的通用功能。所以說組合模式的關鍵是要有一個抽象類別,它

Javascript檔案載入:LABjs和RequireJS

傳統上,載入Javascript檔案都是使用<script>標籤。就像下面這樣:  <script type="text/javascript"

Javascript跨域請求的幾種解決方案

什麼情況下才會出現跨域?假設網域名稱是:http://www.example.com.cn/如果所請求的網域名稱跟這個網域名稱不致,這種情況就是跨域,由於跨域存在漏洞,所以一般來說正常的跨域請求方式是請求不到的。 解決方式:一、window.name    1、 伺服器返回 <script>window.name='{"id":"3", "name":"leisure"}';</script>    2、定義一個iframe,添加onload事件 <iframe

深入理解JavaScript系列(42):設計模式之原型模式

介紹原型模式(prototype)是指用原型執行個體指向建立對象的種類,並且通過拷貝這些原型建立新的對象。本文對於原型模式,我們可以利用JavaScript特有的原型繼承特性去建立對象的方式,也就是建立的一個對象作為另外一個對象的prototype 屬性值。原型對象本身就是有效地利用了每個構造器建立的對象,例如,如果一個建構函式的原型包含了一個name屬性(見後面的例子),那通過這個建構函式

深入理解JavaScript系列(45):代碼複用模式(避免篇)

介紹任何編程都提出代碼複用,否則話每次開發一個新程式或者寫一個新功能都要全新編寫的話,那就歇菜了,但是代碼複用也是有好要壞,接下來的兩篇文章我 們將針對代碼複用來進行討論,第一篇文避免篇,指的是要盡量避免使用這些模式,因為或多或少有帶來一些問題;第二排是推薦篇,指的是推薦大家使用的模式, 一般不會有什麼問題。模式1:預設模式代碼複用大家常用的預設模式,往往是有問題的,該模式使用Parent()的建構函式建立一個對象,並且將該對象賦值給Child()的原型。我們看一下代碼:function

總頁數: 3271 1 .... 395 396 397 398 399 .... 3271 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.