一般来说这些资源是不需要你自己手动来释放的,因为在页面关闭的时候系统会自动回收.
不过你自己一定要手动回收的话可以做一个 dispose 析构函数:for(var i in obj) delete obj[i];
或者结合pool连接池的设计,重复使用这些连接对象.

解决方案 »

  1.   

    我想释放掉的主要原因是:当使用 open 去检查数据库中是否存在该用户名的时候,会有异常现象。例如:用户名,001,检查不存在,注册成功了,但再次输入 001 的时候,还是会出现检查不存在,就像是第一次检查的结果得不到刷新,所以我就想是不是链接用完之后,没有释放呢?myXMLHttpRequest.open("GET", AjaxUrl, true);
    myXMLHttpRequest.onreadystatechange = AjaxUpdatePage;
    myXMLHttpRequest.send(null);
      

  2.   

    嗯,这个应该是你的浏览器本地缓存策略捣的乱,因为你请求的是同一个地址,因此浏览器直接以上次的请求结果给你了,所以这个问题不是说 xhr 对象释放的问题,你可以这样解决,在请求的URL上加上一个随机参数或时间戳.AjaxUrl += (AjaxUrl.indexOf("?")>0?"&":"?") +".stamp="+ (new Date().getTime().toString(36));保证每次发送的请求地址都不相同, 避免浏览器本地的缓存
      

  3.   

    晕,这个是因为缓存的问题,一般来说,要给AjaxUrl后面加上一个随机数,让每一次url都不同的,它才会去真正Ajax你要的页面.
      

  4.   

    我想释放掉的主要原因是:当使用 open 去检查数据库中是否存在该用户名的时候,会有异常现象。 例如:用户名,001,检查不存在,注册成功了,但再次输入 001 的时候,还是会出现检查不存在,就像是第一次检查的结果得不到刷新,所以我就想是不是链接用完之后,没有释放呢? myXMLHttpRequest.open("GET", AjaxUrl, true); 
    myXMLHttpRequest.onreadystatechange = AjaxUpdatePage; 
    myXMLHttpRequest.send(null);
    =============================
    这种想象是ajax常见的浏览器缓存导致的,并不是没有释放掉 xmlhttp解决方法:
    方法一:
    xmlHttp.open("GET", "default.aspx?param="+Math.random(), true);
    或者
    xmlHttp.open("GET", "default.aspx?param="+new Date().getTime(), true);
    方法二:
    xmlHttp.open("GET", "default.aspx", true);
    xmlHttp.setRequestHeader("If-Modified-Since","0");
    xmlHttp.send(null);