问答详情
源自:4-3 [DOM事件] QQ面板状态切换效果

this,event,obj的区别?

  1. this 指当前对象,但是有个小疑问,this只能作用于当前部分?一旦嵌套以后不能连续用一个this而不重新定义?

  2. event我查的是与键盘和鼠标事件有关?不知道对不对?而且有时候用event有时候用e,是规定的还是随意的?

  3. obj完全不知道.....

提问者:灼眼繁华 2015-08-12 16:42

个回答

  • q有天堂
    2015-12-28 11:23:33

    这三个的区别挺大的。首先需要了解的是,javascript其实是一种面向对象的语言。对象是一种抽象的概念,你可以把对象理解成一个东西。它有各种属性,也有各种方法(一般就是函数)。英语里面管对象叫做object, 简写就是obj.

    在面向对象的语言中,有各种各样的对象。比如我们可以规定一个对象。

    objA = {

        name: 'Alice',

        gender: 'female',

        age: 40,

       function isOld() { 

            if(this.age>30){return true;}

            else return false;

        } 

    }

    那么在这个叫做objA的对象里,它有3个属性和一个方法,其实大意就是说,objA的名字叫爱丽丝,是个女的,年龄40,这个对象还能判断自己老不老。我们引用对象的属性和方法的时候,直接能用'.'. 比如 objA.name, objA.isOld(). 

    this是怎么回事呢,就是说,你在对象本身的方法中引用对象本身的属性的时候,你就可以用this来代替这个对象,就像objA.isOld里面有this.age这个用法,这里this.age就是说的objA.name。但是由于是在对象内部,所以可以用this。所以使用this的时候,它具体代表什么,那要看你是在哪个对象当中使用的了。至于说,如果你是嵌套的对象,而且父对象和子对象当中又相同的变量,我认为(我没试验过),子对象中的this代表子对象,而不能代替父对象。

    而event这个东西,它其实只是针对事件才有的。当浏览器有事件触发时,就会产生event这个对象,而这个对象可以通过事件处理函数当中的参数获得,比如, obj.oncllick = function(e) { }. 这里是javascript的一种机制,无论你这个处理函数当中的参数写成什么,它都会把event对象传递给那个参数,所以只要处理函数中的那个参数是合法的变量名,写成什么都可以,不过为了可读性,人们多数写成event或者e。

  • joker_0042
    2015-10-20 17:24:34

    1. 当代码的执行环境发生了变化,this的指向就会发生改变;

    2. 事件:用户或者浏览器自身·执行的某个动作;

      事件对象:在触发DOM上的某个事件时,就会产生一个事件对象event;

      事件处理程序可以用一个变量(符合变量的命名规则就行)接收这个对象,进而做出其他操作。

    你说的obj是指什么?