JS培訓課筆記

昨晚上了一堂js培訓課,感覺不錯,弄清楚了js的基本工作原理,謝謝Yok哥.

內容圍繞js展開.由於現在Web2.0對js的要求也挺高.所以寫下這隨筆.

基本類型就寫出來了.js還是有點OO的.

對象採用ojbect單根繼承,類似java.

我mark下我一直不太清楚的:

1"=="與"==="

也許多數人都看過==,===的話可能用得比較少.

==會進行類型轉換,===不會.我一直很少用===.可能還沒有找到一定要用的:)

2NaN,null,undefine

undefined 屬性

返回 undefined 的一個初始值。

undefined

說明

undefined 屬性是 Global 對象的一個成員,該屬性在腳本引擎初始化後可用。如果已聲明瞭一個變量但還沒有初始化,那麼該變量的值就是 undefined

如果還沒有聲明變量,那麼就不能將其與 undefined 進行比較,但是可以將該變量的類型與字符串 "undefined" 進行比較。

當顯式地測試變量或將變量設置爲 undefined 時,undefined 屬性是很有用的。

NaN 屬性

表示算術表達式返回非數字值的特殊值。

number.NaN

number 參數是Number 對象.

說明

在能夠訪問 NaN 屬性前不必創建 Number 對象。

NaN 不與任何值相等,包括其本身。要檢測值是否爲 NaN,請使用 isNaN 函數。

null爲空值

3 用vs2003調試js

之前一直都是用debugger;語句來拋出空異常,讓vs catch.yok哥終於讓我脫離苦海.

用附加進程.通過運行文檔和堆棧監控調試.可以設定任意斷點.爽.

FF的調試我就沒有試過.........

4作用域鏈(scope chain)

js的作用域鏈(scope chain),是JS的運行原理了:由調用對象的鏈表組成, 變量會依次從作用域鏈中尋找

5prototype與對象

每個函數都有一個prototype屬性, 作爲由這個函數new出來的對象的”原型對象”, new出來的對象都繼承自它的prototype

6 this

There is a this value associated with every active execution context. The this value depends on the caller and the type of code being executed and is determined when control enters the execution context. The this value associated with an execution context is immutable. 

構造函數的this是正在創建的對象
方法的this是調用方法的對象

7 Clousure(閉包)

昨天早上給Yok哥忽悠了一下...........

閉包是一個把函數定義和作用域聯合在一起的對象
函數定義時的上下文變量可從閉包中獲取
function f() {
 var a = 'local a';
 var b = 'local b';
 var g = function () {
  alert(a);
  alert(b);
 }
 return g;
}
var test = f();
test();
//f()返回的函數總能訪問局部變量a, b

利用閉包可以解決方法裏this含義混亂的問題

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章