Time of Update: 2017-01-19
一、什麼是閉包? “官方”的解釋是:所謂“閉包”,指的是一個擁有許多變數和綁定了這些變數的環境的運算式(通常是一個函數),因而這些變數也是該運算式的一部分。 相信很少有人能直接看懂這句話,因為他描述的太學術。我想用如何在Javascript中建立一個閉包來告訴你什麼是閉包,因為跳過閉包的建立過程直接理解閉包的定義是非常困難的。看下面這段代碼: 複製代碼 代碼如下: function a(){ var i=0; function b(){ alert(++i); } return b;
Time of Update: 2017-01-19
全域變數是Window對象屬性的一部分,例子: 複製代碼 代碼如下: var test = 'test'; alert(window.test); 瀏覽器渲染和操作HTML的大致順序: HTML解析完畢 外部指令碼和樣式表載入完畢 指令碼在文檔內解析並執行 HTML DOM完全構造起來 圖片和外部內容載入 網頁完成載入 所有的主流瀏覽器都實現了innerHTML 屬性,但是因為沒有統一標準,所以或多或少會有一些怪異的bug。
Time of Update: 2017-01-19
在啟用了firebug面板後,會增加一個window.console對象及window.console.firebug變數用於儲存當前firebug的目前的版本,當關閉firebug面板後則變回正常,於是我們可以通過判斷其是否存在來檢測是否開啟了firebug。 複製代碼 代碼如下: Boolean(window.console && window.console.firebug)
Time of Update: 2017-01-19
1.避免使用eval或者Function建構函式 2.避免使用with 3.不要在效能要求關鍵的函數中使用try-catch-finally 4.避免使用全域變數 5.避免在效能要求關鍵的函數中使用for-in 6.使用字串累加計算風格 7.原操作會比函數調用快 8.設定setTimeout() 和 setInterval() 時傳遞函數名而不是字串 9.避免在對象中使用不需要的DOM引用 10.最清晰的目標速度,最小化範圍鏈 11.試著在指令碼中少使用注釋,避免使用長變數名
Time of Update: 2017-01-19
先看看效果: 複製代碼 代碼如下: <script type="text/javascript" src="http://users4.Jabry.com/pengju/src/pj-2.1.1.mini.js"></script> <script type="text/javascript" src="http://users4.Jabry.com/pengju/src/Calendar.js"></script> <input name=
Time of Update: 2017-01-19
何謂沒有被釋放資源的棧區和預執行的過程,用一個最常見的樣本來解釋: 比方現在我們有一個ul,下面有很多個li,需要遍曆他們為他們綁定單擊事件,並在點擊後將當前下標傳遞給另外一個function來進行額外的處理: 複製代碼 代碼如下: for(var i=0; i<agroup.length; i++) { agroup[i].onclick = function() { handler(i); } }
Time of Update: 2017-01-19
1.嘮叨 javascript語言是一門優秀的指令碼語言.其中包含指令碼語言的靈活性外還擁有許多進階語言的特性.例如充許構建和執行個體化一個對象,記憶體回收機制(GC:Garbage Collecation).通常我們使用new建立對象,GC負責回收對象佔用記憶體地區.因此瞭解GC,可以加深對javascript記憶體回收機制的理解。 2.用局部變數和全域變數解釋GC
Time of Update: 2017-01-19
效果示範代碼: 雲棲社區 www.jb51.net 雲棲社區 www.jb51.net 雲棲社區 www.jb51.net 雲棲社區 www.jb51.net [Ctrl+A 全選 注:如需引入外部Js需重新整理才能執行]核心代碼:複製代碼 代碼如下:function showtable(){ var color1 = "rgb(234,240,255)"; var color2 = "rgb(255,255,255)"; var bgColor =
Time of Update: 2017-01-19
JavaScript自1995年誕生以來已過去了16個年頭,如今全世界無數的網頁在依靠她完成各種關鍵任務,JavaScript曾在Tiobe發布的程式設計語言熱門排行榜中排到了第8名,緊隨C#,JavaScript從過去裝飾性的一種指令碼語言轉變為主流的程式設計語言,人們用它來開發更大更複雜的程式,這就需要Web開發人員更深入的瞭解JavaScript,瞭解它的過去、現在和未來。 JavaScript曆史簡述
Time of Update: 2017-01-19
1.前言 懶載入技術(簡稱lazyload)並不是新技術, 它是js程式員對網頁效能最佳化的一種方案.lazyload的核心是按需載入.在大型網站中都有lazyload的身影,例如Google的圖片搜尋網頁,迅雷首頁,淘寶網,QQ空間等.因此掌握lazyload技術是個不錯的選擇,可惜jquery外掛程式lazy load官網(http://www.appelsiini.net/projects/lazyload)稱不支援新版瀏覽器。 2.lazyload在什麼場合中應用比較合適?
Time of Update: 2017-01-19
在寫程式過程中,經常會遇到去除數組中重複元素的需求。要實現這個功能其實並不難。 我們可以用一個兩重迴圈來實現,對於小的數組,這樣做當然並無不妥。 但如果我們的數組比較大,裡面的元素有上萬個。那麼用兩重迴圈,效率是極為低下。 下面我們就用js的特性,編寫一個高效去除數組重複元素的方法。 複製代碼 代碼如下: <script> function unique(data){ data = data || []; var a = {}; for (var i=0;
Time of Update: 2017-01-19
方法一 複製代碼 代碼如下: function clone(obj){ var o; switch(typeof obj){ case 'undefined': break; case 'string' : o = obj + '';break; case 'number' : o = obj - 0;break; case 'boolean' : o = obj;break; case 'object' : if(obj === null){ o = null; }else{ if(obj
Time of Update: 2017-01-19
一、方法體內返回對象執行個體自身(this) 複製代碼 代碼如下: function ClassA(){ this.prop1 = null; this.prop2 = null; this.prop3 = null; } ClassA.prototype = { method1 : function(p1){ this.prop1 = p1; return this; }, method2 : function(p2){ this.prop2 = p2; return this; },
Time of Update: 2017-01-19
1。延遲切換tab 需求:頁面上有幾個tab,切換tab的時候,會對某個特定地區的資料進行拉取更新。 弊端:使用者從第一個tab切換一直快速切到尾,就會產生n個ajax請求。其實使用者只是需要看到最後一個tab的資料。 複製代碼 代碼如下: var changeTab = function(){ var timeId = 0; return function(tabId){ if(timeId){ clearTimeout(timeId); timeId=0; }
Time of Update: 2017-01-19
修正hashtableobj.set("length","0") bug 可以設定key忽略大小寫 可以clone hashtable對象 可以 使用obj.valueOf("key","defalutvalue") 設定預設值等等 歡迎修正bug 複製代碼 代碼如下: <html> <head> <script type="text/javascript"> // Authors Birdshome, 麻袋@部落格園 改版 phito,彭海濤 Object.
Time of Update: 2017-01-19
但是從全域看來,這樣會導致出現一些讓我們難以掌控的情況的出現:變數同名、多個函數共用一個全域變數後的值的變換……等等。所以,有時候,對於一些簡單的全域變數,我們可以通過另一種方式來處理——用自執行函數+閉包的方法來解: 比如:我們要在網頁載入時給出一個提示,在網頁關閉時給出另一個提示 下面的代碼,實現了以上功能 複製代碼 代碼如下: var msg1 = "歡迎光臨!"; // 定義一個全域變數 var msg2 = "再見!" //定了另一個全域變數 window.onload =
Time of Update: 2017-01-19
複製代碼 代碼如下: var test=(function() { var arr2=[1,2,3,3]; return function(){ return arr2; }; })() Array.prototype.f1= function () { return []; } Array.prototype.f2= function () { this.length=0; return this; } 然後用兩種方式調用: 一:var arr= test();
Time of Update: 2017-01-19
test.htm複製代碼 代碼如下:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type"
Time of Update: 2017-01-19
常用檢查變數類型的方法有兩種,下面是解說: 檢查變數類型方法一:typeof 格式:typeof 變數 用法:if( typeof 變數 == "類型標識") { ... } 下面是一些常用資料類型對應的typeof值: {an:"object"} : object ["an","array"] : object function() {} : function "a string" : string 55
Time of Update: 2017-01-19
而在javascript中,變數的範圍是按函數來劃分的——變數在某個函數範圍內有效。比如: 複製代碼 代碼如下: var f = false; if(true) { var f = true; } //此時f位於if內,也就是塊內,等價於還是全域範圍內 alert(f) //所以,結果為true 再如下例: 複製代碼 代碼如下: var f = false; function test() { var f = true;