this指向

33 阅读1分钟
  1. 定义: this是一个使用在作用域内部的关键字,全局很少用,大部分是在函数内部使用
  2. 指向: 全局使用,指向window,函数使用,不管函数怎么定义,不管函数在哪里定义,只看函数的调用(箭头函数除外)
    • 普通调用(直接调用/全局调用)函数名():this->window
    • 对象调用:xxx.函数名():this->点前面是谁就是谁
    • 定时器处理函数
      • settimeout(function() {},0):this->window
      • setinterval(function() {},0):this->window
    • 事件处理函数
      • xxx.onclick = function(){}:this->事件源(绑定在谁身上的事件)
      • xxx.addeventlistener('',function(){}):this->事件源
    • 自执行处理函数
      • (function () {}):this->window
  3. this改变指向的方法
    • call()
      • 使用方法,直接链接在函数名后面使用
        • 语法:fn.call() obj.fn.call()
        • 参数:第一个参数就是函数内部的指向,第二个参数开始,依次给函数传递参数
        • 特点: 会立即执行函数(不适合用作定时器处理函数或者事件处理函数)
        • 作用:伪数组借用数组的方法
    • apply()
      • 使用方法:直接连接在函数名后面
        • 语法:fn.apply() obj.fn.apply()
        • 参数:第一个参数,就是函数内部的this指向,第二个参数是一个数组或者为数组都行,里面的每一项依次给函数传递参数
        • 会立即执行函数
        • 作用:可以给某些功能函数传参
    • bind()
      • 使用方法:直接连接在函数名后面
        • 语法:fn.apply() obj.fn.apply()
        • 参数:第一个参数就是函数内部的指向,第二个参数开始,依次给函数传递参数
        • 特点:不会立即调用函数,一个已经被改变好 this指向的函数
        • 作用:改变事件处理函数或者定时器处理函数的this指向