深入理解JavaScript系列(46):代碼複用模式(推薦篇)

介紹本文介紹的四種代碼複用模式都是最佳實務,推薦大家在編程的過程中使用。模式1:原型繼承原型繼承是讓父物件作為子物件的原型,從而達到繼承的目的:function object(o) {function F() { } F.prototype = o;return new F();}// 要繼承的父物件var parent = { name: "Papa"};// 新對象var child = object(parent);// 測試console.log(child.name)

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

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

Javascript 編程風格

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

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

介紹本篇主要是介紹建立對象方面的模式的下篇,利用各種技巧可以極大地避免了錯誤或者可以編寫出非常精簡的代碼。模式6:函數文法糖函數文法糖是為一個對象快速添加方法(函數)的擴充,這個主要是利用prototype的特性,代碼比較簡單,我們先來看一下實現代碼:if (typeof Function.prototype.method !== "function") { Function.prototype.method = function (name, implementation) {

深入理解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系列(34):設計模式之命令模式

介紹命令模式(Command)的定義是:用於將一個請求封裝成一個對象,從而使你可用不同的請求對客戶進行參數化;對請求排隊或者記錄請求日誌,以及 執行可撤銷的操作。也就是說改模式旨在將函數的調用、請求和操作封裝成一個單一的對象,然後對這個對象進行一系列的處理。此外,可以通過調用實現具體函數 的對象來解耦命令對象與接收對象。本文我們來通過車輛購買程式來展示這個模式,首先定義車輛購買的具體操作類:$(function () {var CarManager = {// 請求資訊

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

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

javascript的記憶體配置

瞭解javascript的人都知道資料的基本類型按大的分類有兩種:原始值和引用值  在研習演算法的時候會過多的和記憶體打交道;理解棧和堆的定義是很重要的,演算法就是為了能夠獲得最大的效率  任何語言都是如此,javascript也不例外;在javascript中,我在把變數類型分為原始類型和參考型別。原始類型是放在棧即記憶體中,而參考型別這是放在堆中。在ECMAscript中,也是這麼定義的。  棧  主要作用表現為一種資料結構,是只能在某一端插入和刪除的特殊線性表。它按照後進先出的原則儲存資料

如何提升JavaScript函數的運行速度

Nicholas為您講解如何提升JavaScript函數的運行速度!這 篇是Nicholas討論如果防止指令碼失控的第二篇,主要討論了如何重構嵌套循 環、遞迴,以及那些在函數內部同時執行很多子操作的函數。基本的思想和上一節trunk()那個例子一致,如果幾個操作沒有特定的執行順序,而且互相不是 依賴關係,我們就可以通過非同步呼叫的方式加以執行,不止可以減少執行的次數,還可以防止指令碼失控。本文還介紹了通過memoization技術取代遞迴的 方法。【原文標題】Speed up your

深入理解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系列(39):設計模式之適配器模式

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

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

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

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

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

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

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

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

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

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

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

總頁數: 3271 1 .... 264 265 266 267 268 .... 3271 Go to: 前往

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

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

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