javascript 是一種 prototype based programming 的語言, 而與我們通常的 class based programming 有很大 的區別,我列舉重要的幾點如下:函數是first class object, 也就是說函數與對象具有相同的語言地位沒有類,只有對象函數也是一種對象,所謂的函數對象對象是按 引用 來傳遞的 那麼這種 prototype based programming 的語言如何?繼承呢(OO的一大基本要素),
什麼是closure 一種定義是:A "closure" is an expression (typically a function) that can have free variables together with an environment that binds those variables (that "closes" the expression).我的理解是: closure 是一個運算式(通常是一個函數), 這個運算式與一個 環境 共用著一些自由變數,
我們知道,js變數應通過var來定義,例如:var a;這種定義方式只定義了變數名,但沒給初值。不過,js在編譯時間會自動賦予undefined初值。如果要給明確的初值可這樣定義:var a = 123;請看下面的代碼:alert(a);var a = 123;上面的代碼在var之前就用到了變數。一般我們認為這樣的程式會報錯,可是實際運行後我們發現程式並未報錯,而是alert輸出了undefined(undefined也是個值)。這是為什麼呢?在回答這個問題之前,再看下面的代碼:alert(a)
IE 與DOM遊覽器的區別 在上文《javascript的事件處理(一)——基礎原理》中的各種例子,addEventListener()產生的事件監聽在chrome和firfox中有效,但在IE中是無效,這是因為IE實現了類似與DOM中類似的兩個方法:attachEvent()和detachEvent(),使用方法值DOM的相類似,不同的是IE只支援事件冒泡,所以通過attachEvent()添加的事件處理常式都會被添加到冒泡階段。具體代碼如下:<button id
在Web開發裡面經常要用到一些常用的驗證,比如姓名,E-MAIL,電話號碼等.把他們寫成了函數以後就可以直接使用了,以類似的原理可以通過Regex寫出更多更符合的JS函數,各位自己發揮了!--------------------------------------------------1.//校正是否全由數字組成 function isDigit(s) { var patrn=/^[0-9]{1,20}$/; if (!patrn.exec(s)) return false return
eval函數的工作原理eval函數會評估一個給定的含有JavaScript代碼的字串,並且試圖去執行包含在字串裡的運算式或者一系列的合法的JavaScript語句。eval函數將把最後一個運算式或者語句所包含的值或引用作為傳回值。舉例說明eval評估JavaScript運算式var bar = 'bar';var foobar = eval('"foo" + bar');alert(foobar);eval評估JavaScript語句var bar = 'bar';// if variable