123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
-
- function myBind( func, context, arr){
- return function(...params){
- let i = 0;
- const filledArr = arr.map(item => {
- if (item){
- return item
- } else {
- i++;
- return params[i-1]
- }
- })
- return func.call(context, ...filledArr);
- }
- }
- var pow5 = myBind(Math.pow, Math, [undefined, 5])
- var cube = myBind(Math.pow, Math, [undefined, 3])
- console.log(pow5(2))
- console.log(cube(3))
- var chessMin = myBind(Math.min, Math, [undefined, 4, undefined, 5,undefined, 8,undefined, 9])
- console.log(chessMin(-1,-5,3,15))
- console.log(myBind((...params) => params.join(''), null, [undefined, 'b', undefined, undefined, 'e', 'f'])('a','c','d') === 'abcdef')
|