注册 / 登录

清河洛

JavaScript中call()、apply()、bind()的用法

admin2020-07-03 08:55:40清河洛2204
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

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


网址导航