js中this关键字的使用
2012-09-20 15:26
253 查看
js中this关键字代表类的变量和方法为公有方法,可供类的对象访问。看下面的代码:
这样p1和p2都是Person的对象,name和age属性都使用this关键字标明,是类的公有属性,所以p1和p2都可以访问。原理是在桟中p1指向一个地址,在堆中这个地址下面有一个name和age属性。同时在桟中p2指向一个地址,在堆中这个地址下面也有一个name和age属性,这两个地址指向的name和age属性的值是一样的。但是改变p2指向地址的name属性的值,p1指向地址的name属性的值不会改变。因为并不在一块内存中。
再来看一段代码:
这段代码的输出结果是90,从面向对象的角度考虑,方法和属性都是对应对象的,那么test1和v都是对应window对象的,window对象是javascript层级中的顶层对象。可以把当前窗口对象的方法当作函数来使用,如只写alert(),而不必写window.alert();
注意:哪个对象实例调用this所在的函数,那么this就代表哪个对象实例。this 不能放在类的外部使用,否则调用者就变成了window啦
<html> <head> <script language="javascript"> function Person() { this.name = "abc"; this.age = 900; } var p1 = new Person(); window.alert("p1的名字为:" + p1.name + " " + p1.age); var p2 = new Person(); window.alert("p2的名字为:" + p2.name + " " + p2.age); </script> </head> <body> </body> </html>
这样p1和p2都是Person的对象,name和age属性都使用this关键字标明,是类的公有属性,所以p1和p2都可以访问。原理是在桟中p1指向一个地址,在堆中这个地址下面有一个name和age属性。同时在桟中p2指向一个地址,在堆中这个地址下面也有一个name和age属性,这两个地址指向的name和age属性的值是一样的。但是改变p2指向地址的name属性的值,p1指向地址的name属性的值不会改变。因为并不在一块内存中。
再来看一段代码:
<html> <head> <script language="javascript"> function test1() { alert(this.v); } var v = 90; window.test1();//==test1(); </script> </head> <body> </body> </html>
这段代码的输出结果是90,从面向对象的角度考虑,方法和属性都是对应对象的,那么test1和v都是对应window对象的,window对象是javascript层级中的顶层对象。可以把当前窗口对象的方法当作函数来使用,如只写alert(),而不必写window.alert();
注意:哪个对象实例调用this所在的函数,那么this就代表哪个对象实例。this 不能放在类的外部使用,否则调用者就变成了window啦
相关文章推荐
- 在XSLT的js方法中使用this关键字得不到想要的结果
- JS中this关键字的使用
- JS中内嵌函数中this关键字的使用
- JS中内嵌函数中this关键字的使用
- Cocosd2d-js this关键字使用
- html 手机端click 事件延迟问题(fastclick.js使用方法)
- AjaxUpLoad.js文件上传插件的使用
- JS中Math.ceil()和Math.floor(x)的使用
- 一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之用户管理(1)
- js获得参数的getParameter使用示例
- 巧妙使用js让下拉框既可以选择又可以编辑
- js中递归函数的使用介绍
- asp.net web开发中使用JS百度地图信息弹出窗中显示echarts图
- 上传插件webuploader.js的使用示例
- js中使用进行字符串传参
- jQuery Select2使用js赋值
- 使用 JSARToolKit 编写扩增实境应用
- 使用Node.js+Socket.IO搭建WebSocket实时应用
- 使用JS实现图片展示瀑布流效果(简单实例)