╋艺 镇╋╋网站网络|程序语言|Flash╋┣◇网站建设&Web语言 → [js]关于js中的this关键字


  共有16103人关注过本帖树形打印复制链接

主题:[js]关于js中的this关键字

美女呀,离线,留言给我吧!
admin
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 司令 亲民勋章
等级:管理员 帖子:3027 积分:27515 威望:0 精华:7 注册:2003/12/30 16:34:32
[js]关于js中的this关键字  发帖心情 Post By:2010/9/9 17:08:55 [只看该作者]

<script type="text/javascript">
function show()
{
window.alert(this.info);
}

function MyInformation(mycity,myuniversity,myyear)
{
this.city=mycity;
this.university=myuniversity;
this.year=myyear;
this.info="毕业于"+this.city+this.university+":"+this.year+"年";
this.show=show;
}

MI=new MyInformation("成都","电子科技大学","1999");
</script>
<form>
<input type="button" value="aboutme" />
</form>

这是一般js教材上的一段例子
但讲解得不是很详细

我想问问的是
1.在前面的function show()中的"this"不是指show()吗? 但好像实际情况是指MyInformation() 为什么会这样??
2.function MyInformation中的"this.show=show;"到底有什么用啊?
删除又不能运行.


如有表述错误不要见怪~初学者~
越详细越好~~~~~谢谢~


  
平面设计、网站建设、三维动画、视频制作 联系QQ:114103945  回到顶部
美女呀,离线,留言给我吧!
admin
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 司令 亲民勋章
等级:管理员 帖子:3027 积分:27515 威望:0 精华:7 注册:2003/12/30 16:34:32
  发帖心情 Post By:2010/9/9 17:09:09 [只看该作者]

下面的那个MyInformation函数是一个类的声明,也就是说MyInformation是一个类的构造器,而它里面有一句this.show=show;
这一句的意思是这个类中有一个show方法(this.show),所谓方法就是类特有的一个函数,所以在show这个函数,其实是MyInformation类的一个方法,而show里面的this,当然指的是MyInformation这个类本身,而不是show.

这个例子,程序不应该这样写,这样写对于初学者可能不是很好理解,
实际应该把function show(){...}这个函数写到MyInformation的里面
也就是类似于:

function MyInformation(){
  this.xxx=aaa;
  this.yyy=bbb;
  ....
  this.show=function(){
     alert(this.info);
  }
}

这样写的话你可能容易理解一点。当然我们还可以通过prototype原型构造器来构造这个方法,形如:

function MyInformation(){
  this.xxx=aaa;
  this.yyy=bbb;
  ....
}
MyInformation.prototype.show=function(){
   alert(this.info);
}

这种方式,我给出的这两种方式都是js最标准的类的方法声明,你再找找相关的教程或例子。

下面是我的个人网站,里面有大量js教程,希望对你有所帮助:


  
平面设计、网站建设、三维动画、视频制作 联系QQ:114103945  回到顶部