补充,我用:
document.body.attachEvent( "onclick", this.hide );
来为body增加onclick事件程序的。现在发现在hide()里面,this也不是body,也不是类本身,不知道是什么东西。

解决方案 »

  1.   

    this是在你的元素里面时候实用的
    比如说
    <div id="lihan" onclick="alert(this.id)">
      

  2.   

    我说的是面向对象的编程。在一个类里面如果因为本类的成员变量。因为this关键在在某些情况下并不是指向本类,导致访问不了本类的成员。
      

  3.   

    document.body.attachEvent( "onclick", this.hide );  这里你的this好像是当前的window对象你在body上面attachEvent,所以事件的委托函数是以body为作用域的,这是正常的,你说的问题是你自己的思路有问题。在浏览器的事件委托机制中,大概是这样来实现的,你看了可能会明白一些:var body = function(){}
    body.prototype = {
      ....
      
      handler:{
         onclick:[],
      },
      
      attachEvent:function(type,fn){
         this.handler[type].push(fn);
      },
      
      click:function(){
        //执行一些body被click的过程
        for(var i=0;i<this.handler["onclick"].length;i++){
            this.handler("onclick")();  //调用事件的委托函数,作用域是当前的注册对象
        }
      }}大概是这么个过程,如果还不明白加我qq 113411553
      

  4.   

    this.hide=function()
    {
    var oDiv = document.getElementById( this.id );
    oDiv.style.display = "none";
    };
    this.id中的this不是指代你当前的对象是很正常的事!
    js中的作用域是通过函数来划分的,这里this的作用域与外面的this的作用域不同了,指代的东西自然不一样!
      

  5.   

    那请教。这种情况,如何获得类的成员变量?因为此时this不是指向类/
      

  6.   

    Function.prototype.bind = function(object) {
      var __method = this, args = Array.prototype.slice.call(arguments); args.shift();
      return function() {
        return __method.apply(object, args.concat(Array.prototype.slice.call(arguments)));
      }
    }然后
    document.body.attachEvent( "onclick", this.hide.bind(this) ); 
      

  7.   

    在JS中代码中的this是一个指针他指向什么看运行环境.你的这段代码
    this.hide=function(){
        var oDiv = document.getElementById( this.id );
        oDiv.style.display = "none";
    };
    的作用设位对象绑定一个方法也就是帮函数的指针赋值给对象供函数在合适的时机
    调用,在你做这些操作的时候this确实指当前对象。但这时候你的函数没有运行,
    而当你通过事件触发或其他方法使函数运行时,这时候js解释机已经把this指针
    的值给了另一个对象的地址。所以这就是产生你所说的现象的原因。如果你想在方法中访问对象,比较简单的方法是使用一个必包把对象缓存起来
    var _obj=this;
    this.hide=function(){
        var oDiv = document.getElementById( _obj.id );
        oDiv.style.display = "none";
    };
      

  8.   

    this在js中只有两种用法,
       1.在function中出现的是指整个document,如:你在body中有个id为ff的元素,在functin中传参,就可以直接this.ff.value=....
       2.实例化一个类对象时,指代这个对象。
                                        nana
      

  9.   

    this的作用有n种阿,而且在全局function也不是指向document而是window,而且也没有说Function.call/apply的情况,不知道就不要说这么绝对么~