this总结

2019-12-06  本文已影响0人  MajorDong

JavaScript提供了call、apply、bind这三个方法,来切换/固定this的指向

call

函数实例的call方法,可以指定函数内部this的指向(函数执行时所在的作用域)。
call方法的参数,应该是一个对象,如果 参数为空、null、undefined则默认传入全局对象
call的第一个参数就是this所以指向的那个对象,后面的参数则是函数调用时所需的参数

func.call(thisValue, arg1, arg2, ...)

apply

apply方法的作用与call类似,也是改变this指向,然后再调用该函数。唯一区别就是,它接收一个数组作为函数执行时的参数,使用格式如下

func.apply(thisValue, [arg1, arg2, ...])

第一个参数:和call一样,如果设为null、undefined则指定为全局对象
第二个参数: 是一个数组,该数组的所有成员依次作为参数,转入原函数。原函数的参数,在call方法中必须一个个添加,在apply方法中,必须以数组形式添加

bind

bind方法用于将函数体内的this 绑定到某个对象,然后返回一个新函数。
bind
bind还可以接受更多参数,将这些参数绑定原函数的参数

Function.prototype.bind(thisArg[, arg1[, arg2[, ...]]])

bind最需要注意的是结合回调函数使用

bind与call/apply的区别
相同点: 都可以改变函数执行的上下文环境
不同点:bind不立即执行函数,一般用在在异步调用和事件;call/apply:立即执行函数。

上一篇下一篇

猜你喜欢

热点阅读