原生实现bind()方法

  • 正常情况下bind()是如何使用的??
    Math.max.bind([],3,2,1,34,23,55,4)
    .bind(obj,参数1,参数2…)
    因为形参只设了一个obj,所以obj为第一个实参,所有实参都在arguments里
Function.prototype.mybind = function (obj) {
    // 截取参数1,参数2...
    // [3,2,1,34,23,55,4].slice(2,4) // 结果为:[1,34]
    // [3,2,1,34,23,55,4].slice(1) // 结果为:[2, 1, 34, 23, 55, 4]
    var myarguments = [].slice.call(arguments, 1)
    // 返回Math.max运行结果,this指向任意函数
    return this.apply(obj, myarguments)
}
var res = Math.max.mybind([], 9, 10, 400, 66)
console.log(res);//400
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值