前端,call、apply、bind的用法
(1)call的用法
call是用来改变this指向的
1.隐式传递
fn(1,2)//等价于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)

浙公网安备 33010602011771号