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