JavaScript中this关键字使用方法详解2

转载 2007年09月11日 17:53:00
    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中类定义有些相似,没有什么太特别的地方。
­
    6、结合2&4,说一个比较迷惑的this关键字使用:
  function JSClass()
  {
      this.m_Text = 'division element';
      this.m_Element = document.createElement('DIV');
      this.m_Element.innerHTML = this.m_Text;
        
      this.m_Element.attachEvent('onclick', this.ToString);
  }
  
  JSClass.prototype.Render = function()
  {
      document.body.appendChild(this.m_Element);
  }    
  JSClass.prototype.ToString = function()
  {
      alert(this.m_Text);
  };
  var jc = new JSClass();
  jc.Render();
  jc.ToString();
­
    我就说说结果,页面运行后会显示:"division element",确定后点击文字"division element",将会显示:"undefined"。
­
    7、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看作和1中的一样就可以了,它也是指代div元素对象实例本身。
­
    8、函数中的内部函数中使用this关键字:
  function OuterFoo()
  {
      this.Name = 'Outer Name';
      function InnerFoo()
      {
          var Name = 'Inner Name';
          alert(Name + ', ' + this.Name);
      }
      return InnerFoo;
  }
  OuterFoo()();
­
    运行结果显示是:"Inner Name, Outer Name"。按我们在2中的讲解,这里的结果如果是"Inner Name, undefined"似乎更合理些吧?但是正确的结果确实是前者,这是由于JavaScript变量作用域的问题决定的,详细了解推荐参看"原来JScript中的关键字'var'还是有文章的"一文及回复。
­
     说了这么多JavaScript中this的用法,其实this最根本的特性还是和OO语言中的定义相吻合的。之所以有这么多看似混乱的使用方式,是因为 JavaScript语言(解释器和语言本身的内容)本身在实现上是遵循OO的(Object-based),连它的所有数据类型都是对象,也有 Object这样一个super Object。但是这个语言在运行上(runtime),就没有遵循完备的OO特点,所以就出现了this的指代混乱。
 

JavaScript中this关键字使用方法详解

1、在HTML元素事件属性中inline方式使用this关键字:  div onclick="  // 可以在里面使用this  ">division elementdiv> ...
  • zy408710468
  • zy408710468
  • 2014年05月07日 20:18
  • 148

JavaScript中this关键字含义及其最佳实践(一)

在JavaScript中this关键字非常灵活, 在不同的情况下有不同的含义. 对于初学者来说 比较难以掌握, 即使是有经验的开发人员, 亦容易犯错. Google 一下 understanding ...
  • FuDesign2008
  • FuDesign2008
  • 2014年01月18日 21:21
  • 2051

JavaScript中的this关键字使用方法总结

在javascritp中,不一定只有对象方法的上下文中才有this, 全局函数调用和其他的几种不同的上下文中也有this指代。 它可以是全局对象、当前对象或者任意对象,这完全取决于函数的调用方式。J...
  • qian_xiaona
  • qian_xiaona
  • 2015年12月25日 21:50
  • 270

java中this关键字的用法

对于this关键字,都不陌生,只要在java程序代码中都可见,下面是android中绑定按钮监听一段代码: 点击(此处)折叠或打开 button1.setOnC...
  • BAT_os
  • BAT_os
  • 2015年11月15日 04:53
  • 634

JavaScript用法详解

JavaScript用法详解
  • xinyuan_java
  • xinyuan_java
  • 2015年11月22日 14:32
  • 425

Javascript中的Generator函数和yield关键字

Javascript中的Generator函数和yield关键字 javascript   Erin 2016年11月14日发布 推荐 0 推荐 收藏 2 收藏,...
  • linuxheik
  • linuxheik
  • 2017年04月26日 15:49
  • 354

restrict关键字用法

c99中新增加了一个类型定义,就是restrict。
  • u010129119
  • u010129119
  • 2016年10月11日 16:59
  • 194

JavaScript中变量的定义方式

在JavaScript中,变量的定义方式主要有两种,一种是隐式定义,另一种是显式定义。 隐式定义是直接给变量赋值,如c=3;a="hello"; 显示定义是用var关键字来定义,声明时变量可以没有初始...
  • u012868077
  • u012868077
  • 2016年05月28日 23:31
  • 779

javascript中this关键字---总结2

目录 涵义 使用场合 使用注意点 绑定this的方法 4.1function.prototype.call() 4.2function.prototype.apply() 4.3function...
  • qq_35408613
  • qq_35408613
  • 2016年09月29日 21:48
  • 68

java中this关键字的使用

java中提供了一个关键字this,该关键字总是指向调用该方法的对象。this出现的位置不同: 一,this作为对象的默认引用的时候有两种情况 1.在方法中调用该方法的对象public class...
  • better_man_YHF
  • better_man_YHF
  • 2016年10月11日 22:45
  • 147
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JavaScript中this关键字使用方法详解2
举报原因:
原因补充:

(最多只允许输入30个字)