this指向
this指向
-
普通函数调用,此时 this 指向 window
-
构造函数调用, 此时 this 指向 实例对象
-
对象方法调用, 此时 this 指向 该方法所属的对象
-
通过事件绑定的方法, 此时 this 指向 绑定事件的对象
-
定时器函数, 此时 this 指向 window
-
箭头函数中的this指向,箭头函数中没有自己的this,它的this是继承而来,默认指向在定义它时所处的对象(宿主对象)。
-
当函数被当作监听事件处理函数时,其this指向触发该事件的元素(针对于addEventListener 事件
-
内联事件中的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从第二个参数开始往后,每个参数被依次传入函数