Time of Update: 2014-04-10
每個寫過程式的人都不會對範圍這個概念陌生,那在這篇文章中就來談下Javascript的範圍。 在Javascript,全域環境本身就一個對象。在瀏覽器宿主中這個對象是window,而當Javascript用於其它非瀏覽器的宿主,如嵌入式的環境中,可能會是其它的對象。
Time of Update: 2014-04-10
在Web應用程式特別是Web2.0程式開發中,經常要擷取頁面中某個元素,然後更新該元素的樣式、內容等。如何擷取要更新的元素,是首先要解決的問題。令人欣慰的是,使用JavaScript擷取節點的方法有很多種,這裡簡單做一下總結: 通過頂層document節點擷取: document.getElementById(elementId) 該方法通過節點的ID,可以準確獲得需要的元素,是比較簡單快捷的方法。如果頁面上含有多個相同id的節點,那麼只返回第一個節點。
Time of Update: 2014-04-10
遞迴函式是在一個函數通過調用自身的情況下去解決的。方式如下:function factorial(num){if(num 但是這在js裡面可能會出現錯誤:var anotherFactorial = factorial;factorial=null;alert(anoterFactorial(4)); 因為在調用anoterFactorial時內部的factorial已經不存在了。 解決方案是通過arguments.callee來解決。
Time of Update: 2014-04-10
對於正在從事或者打算從事編程的人來說,物件導向是一個耳熟能詳的詞,幾乎每一個人都能列舉出一些物件導向的程式設計語言,例如C++,JAVA,C#等等。其實,物件導向的思想是獨立於程式設計語言的,例如在C#中,在一個靜態類的靜態方法中,按照過程式開發調用一系列靜態函數,我們很難說這是物件導向的編程,相反,象jquery和extjs這樣優秀的javascript庫,卻處處體現著物件導向的設計思想。本文不打算探討javascript是否能夠算做物件導向的程式設計語言,這個問題是重視中國式考試的人應該關注
Time of Update: 2014-04-10
做過前端開發的應該都會對瀏覽器安全色問題抓過頭吧,這裡有一種方法,可以根據使用者使用的瀏覽器判斷使用何種CSS,同樣,你也可以根據使用者登入的時間,顯示白天,夜晚或者淩晨,這樣可以使你的網站更加人性化。 <link href="" rel="stylesheet" type="text/css" id="link"/><script type="text/javascript"><!--if (window.navigator.userAgent.indexOf("MSIE"
Time of Update: 2014-04-10
從基礎的層面來講,理解JavaScript的定時器是如何工作的是非常重要的。計時器的執行常常和我們的直觀想象不同,那是因為JavaScript引擎是單線程的。我們先來認識一下下面三個函數是如何控制計時器的。var int = self.setInterval("updateMsg()",12000);var id = setTimeout(fn, delay); --
Time of Update: 2014-04-10
有些時候我們需要不讓使用者使用右鍵,比如不希望使用者查看本頁面原始碼,或者複製本頁的內容等等。當然使用者可以用各種方法來達到目的,但是我們可以盡量增加他們達到這個目的的難度。使用以下js指令碼就能夠實現這個功能: <script type="text/javascript">// <![CDATA[function doProhibit(){if(window.Event) document.captureEvents(Event.MOUSEUP);function
Time of Update: 2014-04-10
JavaScript是一種在Web開發中經常使用的前端動態指令碼技術。在JavaScript中,有一個很重要的安全性限制,被稱為“Same-Origin
Time of Update: 2014-04-10
Hashtable是最常用的資料結構之一,但在JavaScript裡沒有各種資料結構對象。但是我們可以利用動態語言的一些特性來實現一些常用的資料結構和操作,這樣可以使一些複雜的代碼邏輯更清晰,也更符合面象對象編程所提倡的封裝原則。這裡其實就是利用JavaScriptObject 對象可以動態添加屬性的特性來實現Hashtable, 這裡有需要說明的是JavaScript 可以通過for語句來遍曆Object中的所有屬性。但是這個方法一般情況下應當盡量避免使用,除非你真的知道你的對象中放了些什麼。
Time of Update: 2014-04-10
下面有四道簡短的JavaScript小指令碼,如果你能順利預測指令碼的運行結果,那麼你的JavaScript基本功還是可以的。如果答錯了,可以相應地去補一下缺漏的知識。反正也很簡單,答錯了只是說明你沒瞭解而已,看下資料很快就會明白。那麼先做吧,要看答案請點 runcode 按鈕。 第一題var a = 10;sayHi();function sayHi() {var a = 20;alert(a);}alert(a);第二題var a = 10;sayHi();function sayHi()
Time of Update: 2014-04-10
借這篇文章理清一下自己的思路,同時也希望能給和我同樣一知半解的同學理清一下思路。引發思考來自於我犯的一個錯誤,錯誤碼是這樣的: var o = { ...}var obj = new o(); 結果不用說,當然是報錯的。遺憾的是我以前一直以為var o = { }是定義了一個叫做o的類。然後自己理了一下。得出一下結論: var o = {}; 等價於 var o = new Object(); 但不等價於 var o = function(){};
Time of Update: 2014-04-10
在web頁面中,如果頁面較高,為了方便使用者快速地返回頂部,都會添加一個返回頂部按鈕。效果示範可以查看本頁。如果頁面有滾動高度,右下角就會有一個含有“返回頂部”字樣的黑色背景半透明的小條條。點擊這裡“返回頂部”字樣的按鈕後,頁面就像是抹了潤滑劑一樣,倏地一聲就滑到頂部了,同時,該點擊按鈕也玩起了躲貓貓 – 不見了。效果示範<style>.fixed{ position:fixed; bottom:100px; width:20px; right:100px; height:80px;
Time of Update: 2014-04-10
在使用url進行參數傳遞時,經常會傳遞一些中文名的參數或URL地址,在幕後處理時會發生轉換錯誤。在有些傳遞頁面使用GB2312,而在接收頁面使用UTF8,這樣接收到的參數就可能會與原來發生不一致。使用伺服器端的urlEncode函數編碼的URL,與使用用戶端javascript的encodeURI函數編碼的URL,結果就不一樣。
Time of Update: 2014-04-10
最近在研究js,疑惑也比較多。主要是被原型這個東西給弄迷糊了。疑惑出自於: function foo { this.name = 'foo'; }alert(foo.prototype === Function.prototype ); //false 當時一直沒想明白為啥foo的原型不是Function.prototype。 下面例子讓我想當然的認為o.prototype === Function.prototype 應該為true的: function foo()
Time of Update: 2014-04-10
使用DocumentFragment最佳化多次append 添加多個dom元素時,先將元素append到DocumentFragment中,最後統一將DocumentFragment添加到頁面。該做法可以減少頁面渲染dom元素的次數。經IE和FX下測試,在append1000個元素時,效率能提高10%-30%,FX下提升較為明顯。 前: for (var i = 0; i < 1000; i++) { var el =
Time of Update: 2014-04-10
有段代碼如下: if (![] == []) { //Code} ![] == [],true or false? 我們都知道,ECMAScript中有兩種類型的相等操作符: 全等與不全等——直接比較而不轉換類型 相等與不相等——先轉換類型再比較 全等與不全等的邏輯比較簡單,而今天我們要關注的是我們平時用得比較多的第二種操作符:相等與不相等。當我們對兩個運算元用 ==
Time of Update: 2014-04-10
對象是組成JavaScript的基本單元,在JS中,一切東東其實都是對象,而且功能非常強大,它不僅風格獨特,功能也與眾不同。一、引用(reference)引用的概念是JS的基礎之一,它是指向對象實際位置的指標。見下面的例子:var items = new Array("abc","def","hig");//建立此數組的引用var Ref = items;items.push("klm");alert(Ref.lenth);
Time of Update: 2014-04-10
真正去解釋this這個東西的時候,才發現不是這麼簡單,花了一些時間,寫了幾個小demo,讓我們來一探究竟。恩,以人為鏡,可知得失,看來這句話是很有道理的。 如果是一個全域的function,則this相當於window對象,在function裡定義的各種屬性或者方法可以在function外部存取到,前提是這個function需要被調用。 <script type="text/javascript"> //在function中使用this
Time of Update: 2014-04-10
在這個js架構隨處亂跑的時代,你是否考慮過寫一個自己的架構?下面的內容也許會有點協助。 一個架構應該包含哪些內容? 1. 語言擴充 大部分現有的架構都提供了這部分內容,語言擴充應當是以ECMAScript為基礎進行的,不應當依賴任何宿主環境,也就是說,作為一個架構的設計者,你應當保證你的語言擴充可以工作在任何宿主環境中,而不是僅僅適合瀏覽器環境。你必須保證把它放到WScript,SpiderMonkey Shell,Rhino Shell,Adobe
Time of Update: 2014-04-10
本規範是針對javascript函數式編程風格與公司嚴重依賴於jQuery進行編碼的現實制定出來。 禁止使用eval,with與caller(ecma262 v5 的use strict要求)。eval只允許在加密時機器產生。 聲明變數必須加上 var 關鍵字,除了在for(;;)迴圈等語句中,原則上不允許使用連續聲明。因為連 續聲明的效率不如分開聲明高,而且很容易手誤致其暴露到全域範圍下。 常量,全部大寫。