var wldlzt={
  lou:function()
  {
      wldlzt=null;
  }
};
wldlzt.lou();
执行上,wldlzt是可以被清除的,但是不知这样操作后内存方面有没有什么问题?了解的麻烦说一下谢谢先

解决方案 »

  1.   

    不过如果在wldlzt.lou();之前,有别的变量对wldlzt进行引用.wldlzt.lou();也毫无意义
      

  2.   

    lz这样写理论上是可以的 但是有一个耦合的问题从设计上来说 对象内部应该只关心本身内部的成员和变量你现在这样的写法就是假定 对象知道自己被赋予的变量名 并且操作他 属于管的太宽了var obj={
        xxx1:...
        ,xxx2:...
        ,dispose:function(){ 
           this.xxx1=null;
           this.xxx2=null //或者 this.xxx2.dispose();this.xxx2=null;
        }
    }obj.dispose();
    obj=null;    //变量的使用者来控制变量
      

  3.   

    在做的是一个B/S结构的出纳软件,很频繁的加载DIV层来模拟弹出窗口,我的本意是当关闭该层时,与之相关的所有内部对象全都销毁,如下
    var _divC={html:"要加载的html代码",
    te:各种属性,
    fun:function()各种事件
    lou:function() 关闭时注销
    {
       divC=null;
    }
    };
    这样后divC确实找不到了,但要是有变量var cctv=divC;这样后cctv确实完全等于divC,但系统里一般不会出现这样的代码,顶多是其它地方引用了divC里的某个属性,这个问题应该不大,divC=null后确实是完全消失了,但不了解的是与之相关的属性啦事件啦都是不是都没再占用了内存,这个比较想知道
      

  4.   

    // 先定义一个对象
    var o = {
        name:"test"
    };// 将这个对象赋值给另一个变量
    var b = o;// 修改b的name
    b.name = "testb";// 此时o.name也被修改,说明b和o指向同一个对象
    alert(o.name);// 然后
    o = null;// 看下b.name,仍然存在
    alert(b.name);// 前面得出的结论是o和b指向同一个对象,而这里o赋值为null之后,仍然
    // 能看到b.name,说明该对象仍然存在,所以得出结论,当在o=null之前
    // 有过将o赋值给其他变量的话,这个对象在o=null之后仍然存在。// 那么
    b = null;// 在所有指向该对象的变量都转移注意力之后,是否该对象还存在,
    // 这就不得而知了,你可以查查相关垃圾回收的资料。个人认为,
    // 一个成熟的优秀的浏览器,基本上不会让这个孤魂野鬼存在的。