123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- <header>My bind</header>
- <body>
- <script>
- const myBind = (myFunc, myThis, [...myDefArgs]) => {
- const bindFunc = (...args) => {
- let curArgs = [];
- let i = 0;
- let argsLength = args.length;
- for (defArg of myDefArgs) {
- if (defArg == null) {
- if (i < argsLength) {
- curArgs.push(args[i]);
- i++;
- }
- }
- else
- curArgs.push(defArg);
- }
- for (; i < argsLength; i++)
- curArgs.push(args[i]);
- return myFunc.call(myThis, ...curArgs);
-
- }
- return bindFunc;
- }
- var pow5 = myBind(Math.pow, Math, [, 5])
-
-
-
- var cube = myBind(Math.pow, Math, [, 3])
- pow5(2)
- cube(3)
- var chessMin = myBind(Math.min, Math, [, 4, , 5, , 8, , 9])
- chessMin(-1, -5, 3, 15)
- var zeroPrompt = myBind(prompt, window, [undefined, "0"])
-
- var someNumber = zeroPrompt("Введите число")
- const bindedJoiner = myBind((...params) => params.join(''), null, [, 'b', , , 'e', 'f'])
- bindedJoiner('a', 'c', 'd') === 'abcdef'
- bindedJoiner('1', '2', '3') === '1b23ef'
- console.log(bindedJoiner('a', 'c', 'd'));
- console.log(bindedJoiner('1', '2', '3'));
- </script>
- </body>
|