JavaScript語言精粹學習筆記

1.JavaScript 弱類型,基於原型的繼承,與Java等基於類的繼承有本質區別。
2.JavaScript語法:
    2.1 空白,通常沒有意義,但可以用來分隔字符。
    2.2 註釋,可以支持兩種方式塊註釋/**/和行註釋//,用於*可能在代碼中用到塊嵌套的時候容易引起問題,建議用塊註釋方式。
    2.3 變量,var 被放在公共的全局名字空間中。
    2.4 在邏輯運算中,false,null,undefined ,空字符‘ ’, 數字0,及數字NaN的值都被當着false,其他被當着true,包括‘false’。
    2.5 for語句除了通常情況,還是for in形式遍歷對象的所有屬性,通常需要用obj.hasOwnProperty(var)來確定屬性名就是該對象的成員。
    2.6 可以通過對象子面量方便指定一個對象。
3.對象:
 對象是屬性的容器,每個屬性都有名字和值,對象對新屬性的名字和值沒有約束,有原型鏈特性,運行對象繼承另一對象的屬性
    3.1 對象字面變量,包括在花括號類的零個或多個“名/值”對,屬性之間用逗號分隔,值必須用引號括住,並可以支持嵌套
    3.2 檢索,要檢索對象中的值可以用[]括住表達式,如果是常量,則可以使用.表示法代替,優先使用後者,如果檢索一個不存在的成員元素,將返回一個undefined值
    3.3 更新,對象中的值可以通過賦值語句來更新,如果屬性名已存在對象中將替換,如果不存在,將會擴充
    3.4 應用,對象通過引用來傳替,永遠不會拷貝,每個對象都鏈接到一個原型對象,並可從中繼承屬性,通過字面變量創建的對象都鏈接到Object.prototype這個JavaScript中標準對象原型鏈接在更新時不起作用,原型是一種委託關係,查詢一屬性的時候,如果該對象沒有,則首先進入原型對象找,直到Object.prototype中都沒有,則返回undefined,在原型中添加的屬性,所有基於該原型創建的對象,馬上可見。
4.函數
 編程就是將一組需求分解成一組函數與數據結構的技能
    4.1 函數對象,函數就是對象,函數對象鏈接到Function.prototype(該對象本身被鏈接到Object.prototype)中,創建時有一個prototype對象屬性,中有一個值爲該函數名的constructor的屬性
    4.2 函數字面變量,函數可以通過字面變量來創建,函數有四部分,function關鍵字,函數名(可省略),參數,語句, 函數可以定義在函數內部,內部函數可以訪問被嵌套函數中的變量,通過函數字面變量創建的對象包含一個到外部上下文的鏈接,稱爲閉包。
    4.2 調用,函數有兩個附加參數this和arguments,有四種調用模式:方法調用模式、函數調用模式、構造器調用模式 和apply調用模式,四種模式在初始化this上存在差異
         4.2.1 方法調用模式:函數保存爲對象的一個屬性時稱爲方法,this被綁定到對象上,並可通過this訪問對象
         4.2.2 函數調用模式:當函數並非對象的屬性時,this將被綁定到全局對象上,將導致方法不能通過內部函數幫助其工作,可以通過在方法上定義一個指向this的變量來解決
         4.2.3 構造器調用模式:在函數面前帶上new將創建一個隱藏鏈接到該函數的prototype成員的新對象,this將被綁定到新對象上。
         4.2.4 apply方法可以用來構建一個參數數組並用其去調用函數,第一個參數選擇this的值,第二個參數是參數數組
    4.3 作用域,JavaScript有函數作用域但沒有塊作用域

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