手写bind函数
Posted winter
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了手写bind函数相关的知识,希望对你有一定的参考价值。
Function.prototype.bind1 = function(){
//1.将参数变为数组
let args = Array.prototype.slice.call(arguments)
//2.拿到数组的第一项作为this,已经剩余项
let t = args.shift(); //此时t为第一项,且args里面的第一项已经剔除掉了
//3.这里的this即调用的时候fn1.bind()的fn1
let self = this
//返回一个函数,且函数有返回值
return function(){
return self.apply(t, args)
}
}
let fn1 = function(a, b, c){
console.log(\'this:\', this)
console.log(a, b, c)
return \'this is fn1\'
}
const fn2 = fn1.bind1({x: 100}, 10, 20, 30)
const res = fn2()
console.log(res)
//this: {x: 100}
//10 20 30
//this is fn1
以上是关于手写bind函数的主要内容,如果未能解决你的问题,请参考以下文章
手写callapplybind函数和arguments&数组函数slice的实现
JavaScript高级手写apply()call()bind()