博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

javascript this 用法

Posted on 2006-07-12 20:03  daniel-shen  阅读(5032)  评论(0编辑  收藏  举报
javascript 中this 的用法:
1.<div onclick="// 可以在里面使用this">division element</div> this 指向div
2.    <div id="elmtDiv">division element</div>
       <script language="javascript">
        var div = document.getElementById('elmtDiv');
        div.attachEvent('onclick', EventHandler);  //attachEvent把div的onclick事件和一个方法绑定
         function EventHandler()
         {
         // 在此使用this
          }
        </script>在此this 指向window对象,若要引用div对象this.event.srcElement;
3、用DHTML方式在事件处理函数中使用this关键字:
<div id="elmtDiv">division element</div>
 <script language="javascript">
 var div = document.getElementById('elmtDiv');
 div.onclick = function()
 {
    // 在此使用this
 };
 </script>产生的方法同上,但此处的this 指向div
4、类定义中使用this关键字:
function JSClass()
  {
      var myName = 'jsclass';
      this.m_Name = 'JSClass';
  }
  JSClass.prototype.ToString = function()
  {
      alert(myName + ', ' + this.m_Name);
  };
  var jc = new JSClass();
  jc.ToString();//这是JavaScript模拟类定义中对this的使用,这个和其它的OO语言中的情况非常的相识。但是这里要求成员属性和方法必须使用this关键字来引用,运行上面的程序会被告知myName未定义。
5、为脚本引擎内部对象添加原形方法中的this关键字:
Function.prototype.GetName = function()
  {
      var fnName = this.toString();
      fnName = fnName.substr(0, fnName.indexOf('('));
      fnName = fnName.replace(/^function/, '');
      return fnName.replace(/(^\s+)|(\s+$)/g, '');
  }
  function foo(){}
  alert(foo.GetName());    //这里的this指代的是被添加原形的类的实例,和4中类定义有些相似,没有什么太特别的地方。