设为首页收藏本站

融智技术学院

 找回密码
 注册

QQ登录

只需一步,快速开始

网页图表Highcharts实践教程基础篇
搜索
查看: 414|回复: 0

【JavaScript每日一问】为什么关键字this引用在这两种情况下是不一样的?

[复制链接]
MrLi 发表于 2014-4-10 15:00:00 | 显示全部楼层 |阅读模式

Q:
第一中情况
  1. var object1 = {name: "my object",
  2.                ha: function() {
  3.                       return this;
  4.                    }
  5.               }
  6. object1.ha()  #=> Object {name: "my object", ha: function}
复制代码
第二种情况
  1. var object2 = {name: "my object2",
  2.                ha2: function() {
  3.                       return function() {
  4.                                return this;
  5.                              }
  6.                     }
  7.               }
  8. object2.ha()()  #=> window
复制代码

A:
因为this在object2中在匿名函数中使用时失去了指定父对象的上下文,所以默认范围变成了全局对象,而此时在浏览器中,也就是指向了window对象。
你可以通过局部化对象应用来补救
  1. var object2 = {
  2.     name : "my object2",
  3.     ha2  : function() {
  4.         var _this = this; // <-- 这里
  5.         return function() {
  6.             return _this;
  7.         }
  8.     }
  9. }
复制代码

温馨提示:您的支持与理解,是我们工作最大的动力。如果您是从网上购买的图书,请在对应的网店,给予本书一个好评,我们将衷心感谢!!!
以下是《HTML+CSS网页设计详解》对应的购书评论地址:
当当网:http://product.dangdang.com/23423206.html
亚马逊:http://www.amazon.cn/dp/B00IICLL8W
京东网:http://item.jd.com/11406922.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则

新突破电商

小黑屋|手机版|Archiver|融智技术学院 ( 京ICP备09018999号  

GMT+8, 2018-6-21 14:49

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表