前言
JavaScript 中还允许指定函数中 `this` 的指向,有 3 个方法可以动态指定普通函数中 `this` 的指向
一、改变this指向的三个方法
1.call
2.apply
3.bind
二、使用步骤
1.call
-
call
方法能够在调用函数的同时指定this
的值 -
使用
call
方法调用函数时,第1个参数为this
指定的值 -
call
方法的其余参数会依次自动传入函数做为函数的参数
代码如下(示例):
2.apply
-
apply
方法能够在调用函数的同时指定this
的值 -
使用
apply
方法调用函数时,第1个参数为this
指定的值 -
apply
方法第2个参数为数组,数组的单元值依次自动传入函数做为函数的参数
代码如下(示例):
3.bind
bind
方法创建新的函数,与原函数的唯一的变化是改变了 this
的值。
bind不会回调函数 一般用于延时函数改变this指向
总结
call:fun.call(this,arg1, arg2,......)
apply:fun.apply(this, [arg1, arg2,......])
bind:fun.bind(this, arg1, arg2,......)
相同点:
都可以用来改变this指向,第一个参数都是this指向的对象
区别:
call和apply:都会使函数执行,但是参数不同
bind:不会使函数执行,参数同call