修改this指向

this一般指向的是当前被调用者,我们在定义函数的时候并不能事先确定this指向谁,但我们可以通过其他方式来改变它的指向。

apply()

该方法调用一个函数, 其具有一个指定的this值,以及作为一个数组(或类似数组的对象)提供的参数。
语法:fun.apply(thisArg, [argsArray])
- thisArg: 在 fun 函数运行时指定的 this 值。
- argsArray: 一个数组或者类数组对象。

function bindThis(f, oTarget) {
    return function(){
        return f.apply(oTarget, arguments);
    };
}

call()

call() 方法调用一个函数, 其具有一个指定的this值和分别地提供的参数(参数的列表)。

该方法的作用和 apply() 方法类似,只有一个区别,就是call()方法接受的是若干个参数的列表,而apply()方法接受的是一个包含多个参数的数组

语法如下: fun.call(thisArg, arg1, arg2, …)

function bindThis(f, oTarget) {
    return function(x,y){
    return f.call(oTarget,x,y);
    };
}

bind()

bind()方法创建一个新的函数, 当被调用时,将其this关键字设置为提供的值,在调用新函数时,在任何提供之前提供一个给定的参数序列。

语法: fun.bind(thisArg[, arg1[, arg2[, …]]])
- thisArg: 当绑定函数被调用时,该参数会作为原函数运行时的 this 指向
- arg1, arg2, … : 当绑定函数被调用时,这些参数将置于实参之前传递给被绑定的方法

function bindThis(f, oTarget) {
    return f.bind(oTarget);
}

文章同步:levinhax’s Github Blog

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值