js中this的使用

this是js的一个关键字,随着函数使用场合不同,this的值会发生变化。但是总有一个原则,那就是this指的是调用函数的那个对象。

1、在HTML元素事件属性中inline方式使用this关键字。
 <div οnclick="lookfor(this)">division element</div>

 我们一般比较常用的方法是在此使用:javascirpt: EventHandler(this),这样的形式。不过这里其实可以写任何合法的JavaScript语句,要是高兴在此定义个类也可以(不过将会是个内部类)。这里的原理是脚本引擎生成了一个div实例对象的匿名成员方法,而onclick指向这个方法。

 2、用DOM方式在事件处理函数中使用this关键字。
 <div id="elmtDiv">division element</div>
 <script language="javascript">
 //根据获取id获取当前元素
 var div = document.getElementById('elmtDiv');
 div.attachEvent('onclick', EventHandler);

 function EventHandler()
 {
    this....
    一些对this进行操作。我们要在这个方法中获得div对象引用,应该使用:this.event.srcElement。
 }
 </script>

 3、用DHTML方式在事件处理函数中使用this关键字。

 <div id="elmtDiv">division element</div>
 <script language="javascript">
 var div = document.getElementById('elmtDiv');
 div.onclick = function()
 {
    // 在此使用this
 };
 </script>

 4、类定义中使用this关键字。

  function JSClass()
  {
      var myName = 'jsclass';
      //这个this指向当前类添加了一个变量
      this.m_Name = 'JSClass';
  }

  5、为脚本引擎内部对象添加原形方法中的this关键字。

  Function.prototype.GetName = function()
  {
      var fnName = this.toString(); 
  }

  6、CSS的expression表达式中使用this关键字。

  <table width="100" height="100">
      <tr>
          <td>
              <div style="width: expression(this.parentElement.width); 
                    height: expression(this.parentElement.height);">
                  division element</div>
          </td>
      </tr>
  </table>
  这里的this指向现在的div本身。

  这里有一个例子很好的诠释了JavaScript 高级程序设计里this的描述。
  this对象是在运行时基于函数的执行环境绑定的:
  1、在全局函数中,this 等于 window;
  2、在函数被作为某个对象的方法调用时,this等于那个对象;

  3、匿名函数的执行环境具有全局性,this对象通常指向window。


  var name = "the window";
var obj = {
    name : "xiong zheng xiang",
   getNameFunc : function(){
        return function(){
            return this.name;
       }
  }
};
alert(obj.getNameFunc()());   //"the window"
这是因为执行返回的匿名函数时,this动态绑定执行环境,这个时候this就是window对象了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值