面向对象总结

129 阅读2分钟

this

  1. 在普通函数下this 指向window
  2. 有事件源的指向事件源本身
  3. 在对象下this指向的是自己本身
  4. 定时器中的this 也指向window,除了es6

总结 从上面可以看出this只有3种状态:1.window 2.实例化之后的对象本身 3.事件源 下面是对中这种3种状态的解释。

 1. Bom操作时,函数在实例化之前,this都会指向window,实例化之后的对象this指向对象本身。
 2. DOM操作时,this指向执行方法。
 3. this分为dom和bom操作两种不一样的状态。
 4. 特殊: 定时器调用this的时候,就算在实例化对象中,this也会指向window。
    原因是 定时器是window的方法,window.setTimeout里面的函数的this就是执行window了。

5. 箭头函数:
    1)函数体内的this就是定义时所在的对象,而不是使用时所在的对象。
    2)不可以当做构造函数,也就是说,不可以用new命令实例化函数为对象,否则会抛出一个错误。(因为没有this,所以不能当做构造函数)
    3) 不可以是用arguments对象,改对象在函数体内不存在,如果要用,可以用rest参数代替。
    4)不可以是用yield命令,因此箭头函数不能用作Generator函数。
    
    从第二条来看,箭头函数不能被实例化,也就是说:
    show= y= y;
    new show() //报错哦
    按照原理来说,不能实例化的函数this就会指向window;
    也就是我们第一条所说的,定义时所在的对象,如果我们在window环境中定义,这个箭头函数就会永远指向window。
总结: this指向的是 定义时this指向的对象,-> 永不改变。