前端,call、apply、bind的用法

(1)call的用法

call是用来改变this指向的
1.隐式传递
fn(12//等价于fn.call(undefined,1,2) obj.child.fn(1) //等价于obj.child.fn.call(obj.child,1)
 
2.显示传递
fn.call(undefined,1,2)

(2)apply的用法

apply也是用来改变this指向的,apply的用途和call一模一样,只是参数有区别,call的参数是用逗号隔开的,apply的参数是一个数组。
fn.apply(undefined,[1,2])

(3)bind的用法

使用.bind可以让this不被改变
function f1(p1,p2){ console.log(this,p1,p2) } let f2 = f1.bind({name:'frank'}) //那么f2就是f1绑定了this之后的新函数 f2()//等价于f1.call({name:'frank'})
.bind还可以绑定其他参数
let f3 = f1.bind({name:'frank'},'hi') f3()//等价于 f1.call({name:'frank'}),hi)
posted @ 2022-04-27 11:19  天生如此  阅读(293)  评论(0)    收藏  举报