javascript教程 AJAX常用技术 AJAX框架技术
返回首页
当前位置: 首页 > AJAX教程 > javascript教程 >

必须知道的Javascript知识点之“this指针”

时间:2013-04-23 10:33来源:未知 作者:admin 点击:我要投稿  高质量的ASP.NET空间,完美支持1.0/2.0/3.5/4.0/MVC等

规则1

this指针默认指向方法调用时为其指定的对象,如:obj.fun(),fun方法体中的this指针指向obj。

1 var user = { name: '段光伟' };
2 user.getName = function(){ return this.name; };
3 user.getName();  //返回‘段光伟’
 
1 var user = { name: '段光伟' };
2 user.getName = function(){ return this.name; };
3 user.getName();  //返回‘段光伟’
4 
5 window.name = '李妞妞';
6 window.getName = user.getName
7 window.getName();  //返回‘李妞妞’
8 getName();  //返回‘李妞妞’
 

规则2

如果在方法调用时没有为方法指定对象则this指针默认指向window,如:fun(),fun方法体中的this指针指向window。

1 var fun = function(){
2   return this;
3 }
4 fun();  //返回window对象

规则3

没有在方法体中的代码可以看作执行在一个匿名方法,根据规则2可以推论出其this指针指向window。

1 this  //window对象

改变this指针的默认指向

使用apply

1 var user = { name: '段光伟' };
2 user.hi= function(message){ return this.name+':'+message; };
3 window.name = '李妞妞'
4 user.hi('你好');  //输出‘段光伟:你好’
5 user.hi.apply(window, ['你好']);  //输出‘李妞妞:你好’

使用call

1 var user = { name: '段光伟' };
2 user.hi= function(message){ return this.name+':'+message; };
3 window.name = '李妞妞'
4 user.hi('你好');  //输出‘段光伟:你好’
5 user.hi.call(window, '你好');  //输出‘李妞妞:你好’

构造函数中的this指向

构造函数中的this指针默认指向执行正在构造的对象。

 
1 var User = function(name){
2    this.name = name;
3 };
4 User.prototype.hi = function(){
5    return this.name;
6 };
7 var user = new User('段光伟');
8 user.hi();  //输出‘段光伟’
 

最后的小测试

猜猜最后的输出时什么?

 
 1 var User = function(name){
 2     this.name = name;
 3  };
 4  User.prototype.hi = function(){
 5     return this.name;
 6  };
 7  var user = new User('段光伟');
 8  user.hi();  //输出‘段光伟’
 9 
10 var hi = user.hi;
11 
12 hi();  //猜猜这里的输出

 

本站推荐文章:
本站热点文章:
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色 情、暴力、反动的言论。
评价:
表情:
用户名:密码: 验证码:点击我更换图片