call()、apply()、bind() 都是用来重定义方法中this指向的对象,它们的传入参数:
这三个方法都是第一个传入需要重定义this指向的对象,不同的是 call()按照函数定义的参数顺序依次传入参数 apply()需要以一个参数数组的形式传入 bind()传参和call()相同,不同的是bing()返回的是一个方法,后面需要在添加一对括号调用该返回的方法 fun.call(new_obj,arg1,arg2...,argn) fun.apply(new_obj,[arg1,arg2...,argn]) fun.bind(new_obj,arg1,arg2...,argn)()
应用实例:
var name='小王',age=17; var obj={ name:'小张', fun:function(weight){ console.log(this.name+'年龄'+this.age+',体重'+weight); } } var new_obj={ name:'李四', age:20 } obj.fun.call(new_obj,95) obj.fun.apply(new_obj,[95]) obj.fun.bind(new_obj,95)() //李四年龄20,体重95
- 本文固定链接: https://www.qingheluo.com/javascriptzhongcallapplybinddeyongfa/
- 转载请注明: qingheluo 于 清河洛 发表