黑马程序员技术交流社区

标题: JavaScript中的this关键字 [打印本页]

作者: 吴永飞    时间: 2012-4-8 19:53
标题: JavaScript中的this关键字
JavaScript中的this关键字都指代什么???还有其它的么??
1. (A)作为普通函数直接调用时,this指向window对象.
        2. (B)作为控件事件触发时
        1) inline event registration 内联事件注册 .将事件直接写在HTML代码中(<element
        onclick=”doSomething()”>), 此时this指向 window对象 。
        2) Traditional event registration 传统事件注册 (DHTML方式).
        形如 element.onclick = doSomething; 此时this指向 element对象
        3) <element onclick=”doSomething(this)”>作为参数传递可以指向element
        3. (C)作为对象使用时this指向当前对象。形如:new doSomething();
        4. (D)使用apply 或者call方法时,this指向所传递的对象。
        形如:var obj={}; doSomething.apply(obj,new Array(”nothing”);
作者: 郑建豪    时间: 2012-4-8 20:44
JavaScript其实一门基于或者说是面向对象的语言,这样的话,this这个关键字,在类的内部就显得尤为重要,当
  
创建一个类的时候,如果希望下面new出来的每个类都拥有一些通用的变量或者其他的函数,这个this关键字这是最好
  
的方式。
  
当然,既然是面向对象的语言,必然存在访问权限的问题,这里也和this关键字息息相关。下面我们来演示一个例
  
子来说明一下这个类的访问权限的问题.
  
[javascript]
  //Person类  
    function Person(){
     var name="abc";//var声明的都是类内部的私有变量,外部无法访问  
     var age = 20;
      
     this.name2="edg";//this声明的是公开变量,外部可以访问  
      
     this.show=function(){//shou方法是公开的方法,可以被外部访问,而且可以访问类内部私有方法  
     window.alert(name);
     }
      
     function show2(){//shouw2方法是类内部的私有方法,不能被外部访问  
         
     }
}
  
var p1 = new Person();
document.writeln(p1.name2+p1.name);
p1.show();
  //Person类
     function Person(){
    var name="abc";//var声明的都是类内部的私有变量,外部无法访问
    var age = 20;
   
   this.name2="edg";//this声明的是公开变量,外部可以访问
   
   this.show=function(){//shou方法是公开的方法,可以被外部访问,而且可以访问类内部私有方法
    window.alert(name);
    }
   
   function show2(){//shouw2方法是类内部的私有方法,不能被外部访问
     
   }
   }
  
  var p1 = new Person();
   document.writeln(p1.name2+p1.name);
   p1.show();
  这个Person其实就是一个类,类名就是Person,其中声明的变量,var开头的都是私有变量,只能在类的内部实现访
  
问,而通过this关键字声明的变量是公有的变量,可以在外部访问。当然,只需要公开一个方法,就可以实现外部访
  
问类内部的私有变量,这个this.show=function(){}就是声明一个共有方法,在类的外部也是可以调用的。当然,以此
  
类推,直接声明的方法是私有的方法/
  
下面再看一个例子
  
[javascript]
  function test(){
     alert(this.v);
}
var v = 902;
window.test();
  function test(){
    alert(this.v);
   }
   var v = 902;
   window.test();
  代码很简短,这个的意思是,谁调用的这个方法,这个this就是指的那个对象,比如,window对象调用的test方法,
  
所以在test方法内部,这个this,v就是指在window也就是外部全局是否定义了一个v变量,通过查看可以知道,定义了
  
一个var v = 902;所以这个方法调用的其实就是v的值.


参考网上资料的,希望对你有帮助
作者: 郭青松    时间: 2012-4-8 23:02
一句话 当前触发这个事件的对象(dom元素)。
比如:
<input type="button" value="提交" onclick="func(this);" />
这个this 就是指的这个type为button的按钮。
作者: pray    时间: 2014-4-26 06:26
楼主,支持!
作者: seawaveai    时间: 2015-11-30 00:33
黑马,黑马,是一只好马。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2