摘要:很多人都知道this指针,这篇文章的主要目的是为了培训我们公司的新人。默认的this指针指向规则1this指针默认指向方法调用时为其指定的对象,如:obj.fun(),fun方法体中的this指针指向obj。

小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。

很多人都知道this指针,这篇文章的主要目的是为了培训我们公司的新人。默认的this指针指向规则1this指针默认指向方法调用时为其指定的对象,如: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指针的默认指向使用apply1 var user = { name: '段光伟' };
2 user.hi= function(message){ return this.name+':'+message; };
3 window.name = '李妞妞'
4 user.hi('你好');? //输出‘段光伟:你好’
5 user.hi.apply(window, ['你好']);? //输出‘李妞妞:你好’使用call1 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();? //猜猜这里的输出object expression.method();会被翻译为object expression.method.call(object expression);。而var temp = object expression.method;temp();会被翻译为var temp = object expression.method;temp.call(window)。

觉得可用,就经常来吧! 脚本宝典 欢迎评论哦!?js脚本,巧夺天工,精雕玉琢。小宝典献丑了!

本文固定链接: http://www.js-code.com/js/js_9151.html