日期:2014-05-16  浏览次数:20337 次

对于一个类里面,每个方法都要使用的一些变量,请问写成局部变量好,还是属性好?
例如下面下面这个Div类的局部变量x,y, 要不要在start中写成this.x,this.y的形式?哪种是好的写作习惯? 如果换成后者,有必要在类顶部那样像var x,y这样声明下吗?

function Div(){
    var x,y
this.start=function(a,b){
    x=a;
y=b;
    this.method1();
    this.method2();
}
this.method1=function(){
alert(x+y+1)
}
this.method2=function(){
alert(x+y+100)
}
}
var obj=new Div()
obj.start(10,10)

------解决方案--------------------
这些写法不是什么 写法 / 习惯 上的差别. 他们的在 OOP 中的意义是不同的.


function Div(){
  this.x = value;  // 这模拟的是: 类的公有成员变量
  var y = 'Im private';  // 这模拟的是: 类的私有成员变量
}


------解决方案--------------------
引用:
哦, this.y, this.y叫特权属性,x叫私有属性,那我明白了还是用x这种好,省的被实力出的对象篡改对吧?


this.y 叫成公有成员就行了, 呵呵
this.start 一般管它叫 特权函数. 它可以访问私有方法和变量,而它自己也可以被外部的公有函数访问