我模仿Array了写了一个类,构造函数里除了一个属性外都是函数语句,这么写是不是不标准啊?求个标准写法function f1(){
var m,str=''
for(var i=0; i<arguments.length;i++){
   str=str+arguments[i]+','
}
m=str.length
str=str.substr(0,m-1);
this.strs=str;
}
f1.prototype.toString=function(){
    return this.strs
}
n=new f1(7,8,9)
alert(n)

解决方案 »

  1.   

    也未必啊  比如你的代码改成这样
    function f1(){
        var m,str=''
        for(var i=0; i<arguments.length;i++){
           str=str+arguments[i]+','
        }
        m=str.length
        str=str.substr(0,m-1);
        this.strs=str;
    }
    f1.prototype.toString=function(){
        return this.strs
    }
    n=new f1(7,8,9);
    n.strs=0;
    alert(n)
    就得不到正确结果了  而改成这样
    function f1(){
        var m,str=''
        for(var i=0; i<arguments.length;i++){
           str=str+arguments[i]+','
        }
        m=str.length
        str=str.substr(0,m-1);
    this.toString=function(){
    return str;
    }
    }
    n=new f1(7,8,9);
    alert(n)
    貌似稍微好点  有些只希望度但不希望些的属性可以定义为私有的 然后用特权方法来访问 个人感觉  呵呵
      

  2.   

    恩 是好点,的确没必要还写个原型继承,str本身就是个变量,但还一大堆这样的语句呢: var m,str=''
      for(var i=0; i<arguments.length;i++){
      str=str+arguments[i]+','
      }
      m=str.length
      str=str.substr(0,m-1);
    这些要不要裹进一个方法里什么的,js有什么原则吗?构造函数里最好都是方法和属性啥的