前言:

    看文章标题你就知道,这篇文章我只讲一个简单的Javascript的this关键字,说它简单——它又不简单,因为曾几何时我也对this关键字有些困惑,它也确实会让不少程序员感到不解——它像是一个身份多变的“指针”,有时仅看代码都很难分辨出其当前所指向的对象;恰好这两天我突然想到应该写篇关于Javascript方面的博客,也算是为以后的公司技术培训做点儿准备。这篇文章,我可能更倾向于,用代码来直接的体现我要描述的内容。好的文章不在于它的篇幅长、内容丰富,而在于或者说更重要的是——应该用言简意赅的内容让读者快速、没有歧义的明白你所要讲解的内容;而对于技术文章,代码往往就是最好的描述。好了,直接切入正题...

  

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script src="jquery.js" type="text/javascript"></script>
</head>
<body>
<input id="btnTest" type="button" value="Test" /><br />
<input id="btnTest2" type="button" value="Test2" /><br />
<input id="btnFun" type="button" value="Inner Fun" onclick="this.value=new Date().getSeconds();alert(this);" /><br />
<script type="text/javascript">
//#region 全局this对象,即可以通过this访问到当前页面中的所有(标签或jquery等)对象,此this没有什么实际意义,也很少会这样使用
this.$.trim();
alert(this.btnFun);
alert(this.window.location);
//#endregion $("#btnTest").click(function () {
alert(this.value); //此this是btnTest标签对象,输出:Test
$("#btnTest2").click(function () {
alert(this.value); //此this是btnTest2标签对象,输出:Test2
});
});
</script> <script type="text/javascript">
function UserInfo(name, age) {
var _mySecret = "Can't tell you!";
this.Name = name;
this.Age = age; this.GetMySecret = function () {
/// <summary>获取我的秘密</summary>
alert(_mySecret);
} this.IntroduceMySelf = function () {
/// <summary>自我介绍</summary>
alert("Hello,My Name is:" + this.Name + ", Age is:" + this.Age);
}
} var userObj = new UserInfo("Tom", 23);
userObj.GetMySecret();
userObj.IntroduceMySelf();
</script>
<br />
</body>
</html>

  

上面的代码,就是我们常见的this关键字的使用,也在其中添加了必要的代码注释,以说明其当前所指代的对象。

  this关键字:可以理解为是对象的指针,其具体所指向(对应)的对象要看其(使用)所处的(上下文)环境。其常见的使用场景,所代表的对象大致可以分为以下两类:

  1.html标签(元素)对象:即在html标签绑定的事件(onclick,onmouseover...)中,this关键字表示当前标签的Dom对象,通过this即可完全控制、操纵此html标签,如:设置其样式或绑定其它事件等。

  2.function(类)对象:首先,你可能会有疑问——为什么叫做function(类)对象?众所周知,javascript不存在类(class)的概念,但它所具有的特性却可以比较好的实现"模拟类",如上面的代码中的:function UserInfo(name, age)方法。在此对象中this关键字可以很自然的理解为当前的function(类)对象,其作用和用法跟面向对象编程语言(如:C#)里的this关键字很类似,所以,UserInfo这个方法(类),如果转换为C#代码,想必你会能更直观的理解。代码如下: 

     public class UserInfo
{
string _mySecret = "Can't tell you!"; public string Name { get; set; }
public int Age { get; set; } public UserInfo(string name, int age)
{
this.Name = name;
this.Age = age;
} public string GetMySecret()
{
return _mySecret;
} public string IntroduceMySelf()
{
return ("Hello,My Name is:" + this.Name + ", Age is:" + this.Age);
}
}

   本文就到此结束,如果还是有疑问的地方,或文中有“误人子弟”的描述,希望大家能留言提出!

最新文章

  1. 使用update!导致的更新时候的错误信息不显示 ruby on rails
  2. php 解决json_encode中文UNICODE转码问题
  3. 如何自定义FloatingActionButton的大小
  4. GDUT 校赛01 dp
  5. 项目管理利器——Maven
  6. iOS 轻量级的数据库leveldb
  7. &amp;quot;undefined reference to&amp;quot; 问题解决方法
  8. bottle + vue.js 打造你的单页应用
  9. OpenGL路(四)自制的图形功能(立方体、汽缸、圆锥)
  10. Spring 注解式Aop 入门
  11. [Spark内核] 第38课:BlockManager架构原理、运行流程图和源码解密
  12. 12、类成员访问修饰符public/private/producted/readonly
  13. c# 图片插入Excel
  14. JMeter学习(十四)JMeter函数学习(转载)
  15. Python开发【第三篇】:Python函数
  16. Spring Boot + Spring Cloud 实现权限管理系统 后端篇(九):代码整理优化
  17. kudu基础入门
  18. Qt Lighthouse学习(二),就是QPA(Qt Platform Abstraction) 项目的名字
  19. Java实例---flappy-bird实例[最终版]
  20. 【bzoj2402】陶陶的难题II 分数规划+树链剖分+线段树+STL-vector+凸包+二分

热门文章

  1. Python介绍、安装、使用
  2. SecureCRT使用小技巧
  3. Thinkphp--------为什么Thinkphp会默认进入Index控制器的index方法
  4. SpringMvc异常处理
  5. windows系统调用 semaphore信号量
  6. css3属性之 box-sizing
  7. 【git学习】sha1 deflate
  8. Designing a CSS based template
  9. MyEclipse 10.7 添加JBOSS 6应用服务器
  10. Jenkins RCE2(CVE-2016-0788)EXP