一段class的定义

coffee_mate5 2009-11-12 07:50:26
看见一些代码,如这样定义
ns.myclass = function(theValue) {
var counter = 0;
var value = theValue;
this.value = value;
this.counter = counter;
}

为什么要定义var ,再将var赋给this.var呢? 这样有什么好处?

1,4; 2,3这两组,指代的莫非是不同的变量?

和如下定义有什么区别?
ns.myclass = function(theValue) {
var counter = 0;
var value = theValue;
}
...全文
51 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
dh20156 2009-11-14
  • 打赏
  • 举报
回复
恩,有时候可以这样去考虑,比如,我们可以这样处理private(当然如果真正要用私有,我们可能会在返回prototype的时候进行构造,本例只做示范):


<script type="text/javascript">
var a = function(){
var privateTxt = 'private';
this.publicTxt = 'public';
this.getPrivate = function(){alert('通过方法访问到私有成员:'+privateTxt);};
this.setPrivate = function(str){privateTxt = str;};
}

var A = new a();
alert('访问属性成员:'+A.publicTxt);//访问属性成员

A.publicTxt = 'public A';//直接设置属性成员值
alert('设置后的属性成员值:'+A.publicTxt)

alert('访问私有成员:'+A.privateTxt);//试图访问私有成员

A.getPrivate();//只能通过方法进行访问私有成员

A.setPrivate('private A');//只能通过方法进行设置私有成员
A.getPrivate();
</script>
coffee_mate5 2009-11-14
  • 打赏
  • 举报
回复
那么如果把var定义的看成private的东西,this.XXX定义的看成public的东西,这样想也似乎讲的通,对吧?
dh20156 2009-11-13
  • 打赏
  • 举报
回复
在函数中使用this,则该函数被new实例化后,带this.前缀的变量则可称为是该实例的属性,带this.前缀的函数可看做是该实例的方法,var申明的变量则不能被该实例访问到,但可通过带this前缀的属性或方法访问,请查阅JavaScript变量作用域及面向对象相关资料。

87,993

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧