每日學習:2011.3.3 閉包 動態代理 Map的key

1、閉包:是一個可調用的對象,它記錄了一些信息,這些信息來自於創建它的作用域。
個人理解:閉包思想主要是函數可以作爲一級參數,是一種函數是對象的思想。函數可以作爲參數或者返回值使用。
 
function a(){
var i=0;
function b(){
var j=i; //只要是引用了 i 的。
alert(j);
}
return b;
}

var c=a();
c();


2、動態代理:爲了提供額外的或不同的操作,而插入的用來代替實際對象的對象(中間人的作用)
通常代理類和被代理類實現了相同的藉口,在面向藉口的調用中隱藏了具體的類型信息。
java的動態代理實現:實現InvocationHandler接口,通過Proxy.newInstance()來實例化。

3、Map的key必須同時覆蓋Object的equals()和hashCode()方法
new LinkedHashMap(16,0.75f,true) =>使用最近最少使用(LRU)算法,最近最少使用的排在前面
Object默認的hashCode()使用對象的地址生成散列碼,equals()也是比較對象的地址
hashCode()最重要的因素:無論何時,對同一個對象調用都應該生成相同的值

4、如果將自定的類型對象放入HashSet、HashMap、Hashtable、LinkedHashSet、LinkedHashMap這此散列集合時,一定需要重寫equals與hashCode方法,這樣在放入進去之後還能查找出來。如果放入其他非散列類型的集合時,其實只需要
重寫equals就可以了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章