自学内容网 自学内容网

this,this指向

this的多种用法

  • 全局范围内

  • 函数调用

  • 作为对象方法的调用

  • call/apply/bind 的调用

  • 作为构造函数调用

 在全局范围内使用this ,它将指向全局对象(浏览器中为 window)

纯粹的函数调用,这是函数的最通常用法,属于全局性调用,因此this就代表全局对象Global

 在事件中表示当前元素的时候,可以使用this

在html结构中的this,指向的绑定事件的元素本身

字面量对象中的this:指的就是对象本身

定时器中的this指向window

箭头函数中的this
  • 箭头函数会捕获其所在上下文的 this 值,作为自己的 this 值,自己本身并没有this值;

  • 箭头函数的this永远指向其上下文的this,任何方法都改变不了其指向,如call(), bind(), apply()。

call(),apply(),bind() 方法

所有函数都是对象,都有call(),apply(),bind()方法,都是为了改变this指向

 call和apply相似,不同指出在于传递的方式不同,call的参数需要逐个列举,apply的参数需要通过数组的形式传递

function fun2(a,b){
  console.log(a+b);
  console.log(this);
}
box1.onclick = function(){
  fun2.call(this,10,20)
}
function fun(){
  console.log(this);
}
function fun2(a,b){
  console.log(a+b);
  console.log(this);
}
box1.onclick = function(){
  fun.apply(this)
  fun2.apply(this,[10,20])
}

bind有两个特点

  1. 不会调用函数

  2. 可以改变函数内部this指向

function fun2(a, b) {
    console.log(a + b);
    console.log(this);
}
box1.onclick = function () {
    // bind传參的格式和call是一样的,直接用逗号隔开
    var aa = fun2.bind(this,10,20)
    aa();
}


原文地址:https://blog.csdn.net/aaaaaaaallllll/article/details/142859245

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!