function Aclass(){
     this.open=function(){......很大的一个功能模块......};
}var a1=new Aclass();
var a2=new Aclass();
var a3=new Aclass();
var a4=new Aclass();
var a5=new Aclass();
...function Aclass(){
     this.open=doOpen;
}function doOpen(){......很大的一个功能模块......}var a1=new Aclass();
var a2=new Aclass();
var a3=new Aclass();
var a4=new Aclass();
var a5=new Aclass();
...

解决方案 »

  1.   

    function Aclass(){
         this.open=function(){......很大的一个功能模块......};
    }
    ====>每个对象都使用自己的open函数。每创建一个对象,相应的会创建open函数。(函数在某种意义上也是对象)
    function Aclass(){
         this.open=doOpen;
    }
    function doOpen(){......很大的一个功能模块......}
    ====>所有的对象共享open函数。
      

  2.   

    一样吗?? 代码1, 每new 一次不是都会在内存中创建一个的 open function 吗??
      

  3.   

    不一样
    第一种每次实例化都会产生一个新的function
    第二种只会保存一个doOpen的引用
      

  4.   

    用prototype, 全部实例共用function Aclass(){
         
    }
    Aclass.prorotype.open = function(){......很大的一个功能模块......};或Aclass.prorotype = {
      open : function(){......很大的一个功能模块......}
    };
      

  5.   

    作用不同啊
    第一个是用在类似
    function Aclass(x){
         var y
     this.open=function(){......用到了x或y......};
    }
    这样的结构中的
    如果function是不变的话那当然是用第二个啦
      

  6.   

    要看你实际的运用了,公用的、不会单独改变的就用prototype,单独各自的属性就用类似第一种的写法比较好。
      

  7.   

    不过我的疑问经过几位高人的答复,已经得出结论了,就是实例化会创建新的function,也就是增加了内存开销