其他分享
首页 > 其他分享> > 更快的了解this指向,如何改变this指向

更快的了解this指向,如何改变this指向

作者:互联网

this指向

this指向

  1. 普通函数调用,此时 this 指向 window

  2. 构造函数调用, 此时 this 指向 实例对象

  3. 对象方法调用, 此时 this 指向 该方法所属的对象

  4. 通过事件绑定的方法, 此时 this 指向 绑定事件的对象

  5. 定时器函数, 此时 this 指向 window

  6. 箭头函数中的this指向,箭头函数中没有自己的this,它的this是继承而来,默认指向在定义它时所处的对象(宿主对象)。

  7. 当函数被当作监听事件处理函数时,其this指向触发该事件的元素(针对于addEventListener 事件

  8. 内联事件中的this指向问题,分两种情况
    (1)当代码被内联处理韩式调用时,this指向监听器所在的DOM元素

    (2)当代码被包含在函数内部执行时,this指向等同于函数直接调用的情况,非严格模式下指向全局window,严格条件下指 向undefined


   

```html
<button onclick="console.log(this)">按钮1</button>
<button onclick="(function(){console.log(this)})();">按钮2</button>
<button onclick="(function(){'use strict';console.log(this)})();">按钮3</button>

更改this指向的三个方法

更改this指向的三个方法
call() 方法 (.call(obj,2,3))
apply() 方法(.apply(obj.[2,3]))
call接受的参数为一个一个的,但是apply接受的参数只能为一个严格的数组
bind()方法 (.bind(obj))

apply、bind、call 的区别

写出apply、bind、call 的区别
(1)三者都是用来改变函数this的指向;
(2)三者第一个参数都是this要指向的对象;
(3)三者都可以利用后续参数传参;
(4)apply和call 返回函数时立即调用,bind返回函数时需手动调用;

apply和call的区别

apply和call的区别
apply和call 接受两个参数,第一个参数指定了函数体内 this 对象的指向,
apply第二个参数为一个带下标的集合,这个集合可以为数组,也可以为类数组,apply 方法把这个集合中的元素作为参数传递给被调用的函数
call从第二个参数开始往后,每个参数被依次传入函数

标签:函数,指向,bind,改变,call,更快,apply,参数
来源: https://blog.csdn.net/weixin_48211138/article/details/111396349