以文本方式查看主题 - ╋艺 镇╋ (http://zyzsky.com/bbs/index.asp) -- ┣◇网站建设&Web语言 (http://zyzsky.com/bbs/list.asp?boardid=4) ---- [js]关于js中的this关键字 (http://zyzsky.com/bbs/dispbbs.asp?boardid=4&id=2230) |
-- 作者:admin -- 发布时间:2010/9/9 17:08:55 -- [js]关于js中的this关键字 <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;"到底有什么用啊? 删除又不能运行. 如有表述错误不要见怪~初学者~ 越详细越好~~~~~谢谢~ |
-- 作者:admin -- 发布时间: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教程,希望对你有所帮助: |