||
填充默認值,可以用 &&
避免對 undefined 取值產(chǎn)生異常typeof
, hasOwnProperty
for in
(會包含原型鏈中的所有屬性)delete
可以刪除對象的屬性(是否可以刪除來自原型鏈的屬性?)Object.prototype
,函數(shù)對象連接到 Function.prototype
(而它又連接到 Object.prototype
)prototype
與 Function.prototype
,閉包this
和 arguments
undefined
,傳參過多,多余的將被忽略4 函數(shù)調用模式,差異主要在如何初始化 this
參數(shù)
obj.inc(1)
或 obj['inc'](1)
)都是方法調用;在方法中可以使用 this
引用包含它的對象,而 this
的綁定發(fā)生在調用的時候(和 Java 似乎沒有區(qū)別)函數(shù)調用模式:如果函數(shù)沒有被保存為一個對象的屬性,就稱之為函數(shù)調用;此時 this
被綁定到全局變量上(而不是外部函數(shù)的 this
),這一點很不好,例如方法的內部函數(shù)無法共享方法對 對象的訪問權,但可以通過以下方式實現(xiàn)訪問:
obj.double = function () {
var that = this
var helper = function () {
that.val *= 2
}
helper()
}
new
來調用,那這個調用會創(chuàng)建一個連接到該函數(shù)的 prototype
成員的新對象,同時,this
會被綁定到新對象上;如果一個函數(shù)的目的就是為了結合 new
前綴來調用,就稱之為 構造器函數(shù),通常將這種函數(shù)保存在大寫開頭命名的變量中;不建議使用;apply
調用模式:apply
是函數(shù)對象的方法,調用它將會執(zhí)行該函數(shù),而且 apply
可以傳兩個參數(shù),第一個綁定到函數(shù)的 this
上,第二個綁定到函數(shù)的 arguments
上arguments
可以訪問傳遞給函數(shù)的所有實際參數(shù),包括未在形式參數(shù)中聲明的參數(shù);可以用它實現(xiàn)變長參數(shù),但不建議;arguments
不是數(shù)組,它只是有一個 length
屬性;undefined
new
前綴,且返回值不是一個對象,則返回 this
(該新對象)try
只會有一個 catch
,多種可能的異常需要根據(jù)異常對象的屬性來進行區(qū)分處理