call,apply和bind的使用
同样是对之前知识的查缺补漏
call,apply,bind都可以用来指定this的值。 举例
|
|
xw.say(‘南京’,'南京大学')
得到“男生小王,18岁,在南京市南京大学上学”,这里的this就指向xw。
要把this
变为xh
,得到“女生小红,17岁,在北京市北京大学上学”就可以用call,apply,bind了,以下是用法和区别
call
xw.say.call(xh,'北京','北京大学')
call后面跟着的第一个参数就是要指定的this,后面的参数与xw.say
方法是一一对应的
apply
xw.say.apply(xh,['北京','北京大学'])
say后面跟着的第一个参数也是要指定的this,与call的区别在于后面的第二个参数是一个数组,数组中的元素与xw.say
方法一一对应
bind
xw.say.bind(xh,'北京','北京大学')()
bind的传参方式与call一致,区别在于它返回的是一个函数,所以要再加()
来调用
它也可以写成xw.say.bind(xh)('北京','北京大学')
(这是因为bind返回的是一个函数,我们仍可以在调用的时候传参)