关于前端学习:Javascriptthis指向

  • 理解this和this指向

    • this定义:this是一个在作用域外部的关键字
    • this指向:

      1. 全局下应用,this指向window
      2. 函数内应用,this指向调用者

        • 全局调用,this指向window
        • 对象调用,this指向函数名.后面所有名称
        • 定时器处理函数,this指向window
        • 事件处理函数,this指向事件源
        • 自执行函数,this指向window
        • 箭头函数里的this是捕捉其所在(即定义的地位)上下文的this指向, 作为本人的this指向
  • 扭转this指向

    • 应用call()办法
    • 特点:扭转指向后立刻执行函数
    函数名.call(指向指标, 实参1, 实参2···)
    对象名.函数名.call(指向指标, 实参1, 实参2···)
    
    参数阐明:参数一为扭转后的 this指向,参数二开始给函数传递参数
    
    应用:
    // 获取到的li是一个伪数组,无奈应用数组的forEach办法,所以借用一个数组进行调用forEach办法,应用call办法将this指向li的伪数组
    [].forEach.call(li,function(item){
      item.addEventListener('click',function(){
          console.log(this,item)
      })
    })
    • 应用apply()办法
    • 特点:扭转指向后立刻执行函数
    函数名.apply(指向指标, 实参1, 实参2···)
    对象名.函数名.apply(指向指标, 实参1, 实参2···)
    
    参数阐明:参数一为扭转后 `this`指向,参数二开始给函数传递参数,一个数组或伪数组
    
    作用:能够以数组模式给一些无奈应用数组传参的性能函数进行传参
    如:如 Math.max()办法
    let max=Math.max.apply(this,arr)
    console.log(max)
    • 应用bind()办法
    • 特点:扭转指向后不会立刻执行函数,返回一个扭转this指向的新函数
    函数名.bind(指向指标, 实参1, 实参2···)
    对象名.函数名.bind(指向指标, 实参1, 实参2···)
    
    参数阐明:参数一为扭转后 this指向,参数二开始给函数传递参数
    
    作用:扭转事件处理函数或定时器处理函数的 this指向
    function liClick(){
      console.log(this)
    }
    ul.addEventListener('click',liClick.bind(li))

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理