AJax技术

AJAX学习:理解JavaScript函数(4)

字号+ 作者:H5之家 来源:H5之家 2015-11-22 14:13 我要评论( )

Ajax教程:AJAX学习:理解JavaScript函数(4)。深入认识JavaScript中的this指针this指针是面向对象程序设计中的一项重要概念,它表示当前运行的对象。在实现对象的

  深入认识JavaScript中的this指针
  
  this指针是面向对象程序设计中的一项重要概念,它表示当前运行的对象。在实现对象的方法时,可以使用this指针来获得该对象自身的引用。
  
  和其他面向对象的语言不同,JavaScript中的this指针是一个动态的变量,一个方法内的this指针并不是始终指向定义该方法的对象的,在上一节讲函数的apply和call方法时已经有过这样的例子。为了方便理解,再来看下面的例子:
  
  以下为引用的内容:
  
  <scriptlanguage="JavaScript"type="text/javascript">
  
  <!--
  
  //创建两个空对象
  
  varobj1=newObject();
  
  varobj2=newObject();
  
  //给两个对象都添加属性p,并分别等于1和2
  
  obj1.p=1;
  
  obj2.p=2;
  
  //给obj1添加方法,用于显示p的值
  
  obj1.getP=function(){
  
  alert(this.p);//表面上this指针指向的是obj1
  
  }
  
  //调用obj1的getP方法
  
  obj1.getP();
  
  //使obj2的getP方法等于obj1的getP方法
  
  obj2.getP=obj1.getP;
  
  //调用obj2的getP方法
  
  obj2.getP();
  
  //-->
  
  </script>
  
  从代码的执行结果看,分别弹出对话框显示1和2。由此可见,getP函数仅定义了一次,在不同的场合运行,显示了不同的运行结果,这是有this指针的变化所决定的。在obj1的getP方法中,this就指向了obj1对象,而在obj2的getP方法中,this就指向了obj2对象,并通过this指针引用到了两个对象都具有的属性p。
  
  由此可见,JavaScript中的this指针是一个动态变化的变量,它表明了当前运行该函数的对象。由this指针的性质,也可以更好的理解JavaScript中对象的本质:一个对象就是由一个或多个属性(方法)组成的集合。每个集合元素不是仅能属于一个集合,而是可以动态的属于多个集合。这样,一个方法(集合元素)由谁调用,this指针就指向谁。实际上,前面介绍的apply方法和call方法都是通过强制改变this指针的值来实现的,使this指针指向参数所指定的对象,从而达到将一个对象的方法作为另一个对象的方法运行。
  
  每个对象集合的元素(即属性或方法)也是一个独立的部分,全局函数和作为一个对象方法定义的函数之间没有任何区别,因为可以把全局函数和变量看作为window对象的方法和属性。也可以使用new操作符来操作一个对象的方法来返回一个对象,这样一个对象的方法也就可以定义为类的形式,其中的this指针则会指向新创建的对象。在后面可以看到,这时对象名可以起到一个命名空间的作用,这是使用JavaScript进行面向对象程序设计的一个技巧。例如:
  
  以下为引用的内容:
  
  varnamespace1=newObject();
  
  namespace1.class1=function(){
  
  //初始化对象的代码
  
  }
  
  varobj1=newnamespace1.class1();
  
  这里就可以把namespace1看成一个命名空间。
  
  由于对象属性(方法)的动态变化特性,一个对象的两个属性(方法)之间的互相引用,必须要通过this指针,而其他语言中,this关键字是可以省略的。如上面的例子中:
  
  以下为引用的内容:
  
  obj1.getP=function(){
  
  alert(this.p);//表面上this指针指向的是obj1
  
  }
  
  这里的this关键字是不可省略的,即不能写成alert(p)的形式。这将使得getP函数去引用上下文环境中的p变量,而不是obj1的属性。
  
  点这里查看更多Ajax教程

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • AJAX教程–jQuery

    AJAX教程–jQuery

    2016-01-24 16:06

  • 全面剖析XMLHttpRequest对象

    全面剖析XMLHttpRequest对象

    2016-01-18 13:26

  • AJAX - 请求服务器

    AJAX - 请求服务器

    2016-01-17 16:00

  • 掌握AJAX之AJAX通讯技术简介

    掌握AJAX之AJAX通讯技术简介

    2016-01-15 11:26

网友点评
a