今天終於是把這本書看完了,每一章都有不小的收穫,之後有時間的話會陸續整理出每一章的筆記,^_^言歸正傳,這一章講到的是如何從資料訪問層面上提高JS 代碼的執行效率。總的來講有以下幾條原則:函數中讀寫局部變數總是最快的,而全域變數的讀取則是最慢的;儘可能地少用with 語句,因為它會增加with
今天博文關注的是javascript中的封裝,文章內容來自《pro javascript design patterns》(有興趣的朋友可以直接去下)和自己對這一問題的理解。 本文分上下兩部分,上部講基本模式(basic patterns):完全暴露法,底線標記法和使用閉包;下部講進階模式(Advanced
今天講解的內容是進階模式(Advanced Patterns),如何?靜態方法和屬性,常量還有其他一些知識點。 1.靜態方法和屬性 其實要實現這一功能還是要藉助於閉包。在上一講中的第三種實現方式也使用了閉包,但通過那種實現,內部屬性和方法是執行個體層級的。var book1=new Book('isbn1','title1','author1');var book2=new Book('isbn2','title2','author2');alert(book1.getTitle());
最近在看javascript設計模式的書籍《pro javascript design pattrens》,覺得很不錯,可以提高自己對js oo的理解,也可能協助自己更好的理解別人寫的js library,提高自己js的水平。 這本書中第一個重要的內容就是介面。
本章的主題是繼承,分為上下兩部分來介紹,上主要來介紹call和apply方法,下用來介紹繼承的幾種實現方式。 在介紹繼承的時候,call和apply是一個繞不過去的話題,也是大家需要深入瞭解的知識。下面我們來看看call的定義(apply和call基本是一樣的,只是參數不同,這裡不做介紹了):call 方法請參閱應用於:Function 對象要求版本 5.5調用一個對象的一個方法,以另一個對象替換當前對象。call([thisObj[,arg1[, arg2[, [,.argN]]]]
文章目錄 單元測試的好處 單元測試面臨的困難 從今天開始,我將以讀書筆記的方式向大家介紹《Test-Driven JavaScript Development》相關內容。我不太清楚這本書是否已經有了中文的譯本,有興趣的朋友可以去搜尋下,或者直接讀英文原版。因為是讀書筆記,算是供大家參考學習的資料,所以文章中很多知識或者概念的定義或者講解可能不會那麼精確。只要大家能明白我表達的內容即可,沒必要太較真。 之前我寫了《QUnit系列》
本章的主題是繼承,在javascript中要實現繼承比其他面相對象語言要複雜的多,他主要使用原型實現繼承。下面就介紹幾種常用的實現繼承的方式。 1.經典繼承(Classical Inheritance) 我們首先建立一個Person類。/* Class Person. */function Person(name) { this.name = name;}Person.prototype.getName = function() { return
文章目錄 測試驅動開發的目標和目的 促進測試驅動開發 測試驅動開發的好處
文章目錄 步驟1:編寫測試 步驟2:觀察失敗的測試 步驟3:確保測試通過 步驟4:移除重複的重構 步驟5:重複工作
文章目錄 1.基準和相對效能 2.分析和定位瓶頸
文章目錄 1.typeof 2.constructor 3.Object.prototype.toString.call() 總結 最近在翻看John
最近在看《JavaScript+DOM編程藝術》。好像沒什麼吸收。Dom尋找方法:getElementById() //返回id元素getElementsByTagName() //按照標籤名返回該標籤集合getAttribute()
原文:修正IE6 IE7的window.resize bug 地址:http://www.cnblogs.com/rubylouvre/archive/2010/04/15/1712279.html直接使用javascript操作window.resize,作為老的系統,給每個頁面添加jQuery是很廢工作量,所以要使用原始的javascript函數。 window.onload = function(){ if(!+"\v1" &&
<html><head> <script language="javascript">var tipTimer;function locateObject(n, d) { //v3.0var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {d=parent.frames[n.substring(p+1)].document;
24點遊戲介紹: 給出4個1-9之間的整數,其中每個數字只能且必須使用一次;任意使用 + - * / ( ),構造出一個運算式,使得最終結果為24,這就是常見的算24點的遊戲。本文給出的代碼數字範圍不限於1-9,個數也不限於4個,類型也可不為整數,結果也可以自己指定,不限於24。但是隨著數字個數的增多或數字大小的增大,所用的時間也越長。Code highlighting produced by Actipro CodeHighlighter
一直認為javascript函數的參數是普通的傳值,對象的傳址.今天想把一個對象傳到函數裡面去重建後傳出來,才知道我還是有地方理解錯了.先看http://beba-brook.blogspot.com/2006/06/vs.html的一段代碼:<html><body><script>/*函數宣告*********************/function
由於javascript函數無法按我想象的參數傳址,因此有時就會返回多個值.使用如下代碼:參考:http://blog.csdn.net/leftfist/archive/2008/04/09/2269415.aspx<html><body><script>function f(s1, man){ s1="byebye"; man=new Object(); man.name="YZX"; return [s1,
在http://www.walterzorn.com/jsgraphics/jsgraphics_e.htm找到一個javascript的畫圖庫。相關的函數調用說明如下: 設定畫筆顏色setColor("#HexColor");樣本:jg.setColor("#ff0000");或jg.setColor("red");如果沒有設定畫筆顏色,則預設用黑色來畫。參數缺少時會出錯。參數為非顏色值時也會出錯(防錯這一塊,該庫做得不是非常完善)。 設定畫筆寬度setStroke(Number);樣本:jg
JavaScript也支援條件編譯(它是解釋型的還是編譯型的語言)。<html><body><script type="text/javascript">/**//*@cc_ondocument.write("JScript 版本: " + @_jscript_version + ".<br>"); /*@if (@_jscript_version >= 5) document.write("JScript 版本 5.0+.&l
看以下這段代碼:<html><body><script>class1 = function(){ // 私人屬性 var m_first = 1; var m_second = 2; // 私人方法 function method1() { alert(m_first); } var method2 = function() { alert(m_second); } // 構建函數 { method1(); method2(); }}var o =