如果p是声明在全局地址<script type="text/javascript"> var p=new ...</script>
随着访问的增加,性能会下降么?要释放这个对象p是不是要手动调用某个方法?
----------------------------------------------------------------
一般不会,当然如果你的new people(n)创建达到一个数量级的话就有可能释放对象基本都可以使用p=null;或者你用delete(p);
---------------------------------------------------------------如果p声明在局部地址function a(){var p=new ...;}
那么当退出函数a时,对象p也会消失吧?同时 p 中的变量name也会被自动释放?--------------------------------------------------------------
当然会,p是局部变量,要不JS不是存在严重的设计缺陷么?
--------------------------------------------------------------闭包除了仿真私有变量外,还有什么应用?闭包还有什么不合理的使用会影响性能?
闭包的应用价值有多大(把方法写构造函数里也浪费内存)?
--------------------------------------------------------------
事实上,仿真私有变量倒不是主要的运用我们用这种方法来构造类,如
function Class (Para1,Para2) {
     //变量成员
     this.Para = Para1;
     //函数
     this.Method = function (){...};
}应用价值只能看你怎么用了

解决方案 »

  1.   

    弱弱的一问:闭包是javascript特有的概念吗?哪位高人能解释一下闭包的概念,谢谢
      

  2.   

    如果p声明在局部地址function a(){var p=new ...;}
    那么当退出函数a时,对象p也会消失吧?同时 p 中的变量name也会被自动释放?--------------------------------------------------------------
    当然会,p是局部变量,要不JS不是存在严重的设计缺陷么?
    --------------------------------------------------------------p消失了,那变量name会有什么变化?1.被释放 2.只是失去对其的引用,未释放?(注:p是实现闭包的对象,name是跨出内部函数域的本地变量),这个问题还可以理解为name是不是已经跨出了包含它的"对象"域而存在
    我们用这种方法来构造类,如
    function Class (Para1,Para2) {
         //变量成员
         this.Para = Para1;
         //函数
         this.Method = function (){...};
    }
    ========================================
    这种方式构造的类,每个对象都有方法的副本把?这和prototype的原型声明有矛盾,这种方式的唯一优点就是封装好点,其实并不实用?
      

  3.   

    闭包...JS并不具备良好的OO...<script type="text/javascript">
    //<![CDATA[( // begin anonymous function
    function()
    {
     // code go here 
    }() 
    ); // end anonymous function//]]>
    </script>
      

  4.   

    bt兄,上次给我发了个那个,编辑器,偶找不到安装程序了。。能给偶箱子里发一个不?
    [email protected]
    :D
    感谢的说
      

  5.   

    OK,
    晚上给你发...
    HTML EDITOR && UBB EDITOR...
      

  6.   

    :D
    好啊
    不过偶住的地方随时有上不去网的可能,都好几天没上网了/hx晚上能上网在聊,飘走滴说。。
      

  7.   

    给指点下......p消失了,那变量name会有什么变化?1.被释放 2.只是失去对其的引用,未释放?(注:p是实现闭包的对象,name是跨出内部函数域的本地变量),这个问题还可以理解为name是不是已经跨出了包含它的"对象"域而存在name存在范围是那里?
      

  8.   

    function people(name)
    {
      this.getName=function(){return name;}
    }
    var p=new people('lala');
    p = p.getName = nul;
      

  9.   

    要了解 JS 资源管理, 读读 garbage collection
    PS: JS 不适合做深度了解...