每日学习: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就可以了。

你可能感兴趣的:(C++,c,算法,C#,J#)