JS中this关键字的使用
2014-08-01 13:29
246 查看
js中this关键字代表类的变量和方法为公有方法,可供类的对象访问。看下面的代码:
[html] view plaincopy
<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] view plaincopy
<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啦
[html] view plaincopy
<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] view plaincopy
<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啦
相关文章推荐
- JS中内嵌函数中this关键字的使用
- JS中内嵌函数中this关键字的使用
- js中this关键字的使用
- Cocosd2d-js this关键字使用
- 在XSLT的js方法中使用this关键字得不到想要的结果
- 有关打印、收藏等的JS代码(打印等主要使用了一个IE组件来实现)
- 使用js构造函数构造文档对象
- 使用JS创建虚拟目录,并引导进入浏览
- .ascx文件中使用js
- 在IE 和 Firefox 中兼容使用js
- 使用 this 指针和 prototype 实现 js 的 OO 时的一个区别
- 快速上手,使用 JS 配合XML-RPC(JSP)实现AJAX类型应用
- 使用JS创建虚拟目录,并引导进入浏览
- 使用js脚本如何进行客户端验证时出现乱码怎么办?
- 使用js递交面面数据
- 我的第一段未使用 document.all.obj 的JS
- JavaScript中this关键字使用方法详解
- JavaScript中this关键字使用方法详解
- 使用 this 指针和 prototype 实现 js 的 OO 时的一个区别
- 使用struts 怎么才能在执行完js校验页面的信息,发现不全的情况下,不让页面提交到Action中