main.js 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. // let countTime = 0;
  2. // function makeProfileTimer () {
  3. // countTime = performance.now();
  4. // return () => performance.now() - countTime;
  5. // }
  6. // var timer = makeProfileTimer();
  7. // alert('Замеряем время работы этого alert');
  8. // alert(timer());
  9. //makeSaver
  10. // debugger;
  11. // function makeSaver (arg) {
  12. // let storage = [];
  13. // return () => {
  14. // if (storage.length) {
  15. // let elemArr = arg();
  16. // storage.push(elemArr);
  17. // }
  18. // return storage[0];
  19. // }
  20. // }
  21. // var saver = makeSaver(Math.random);
  22. // var value1 = saver();
  23. // var value2 = saver();
  24. // console.log(value1 === value2);
  25. // var saver2 = makeSaver(() => console.log('saved function called') || [null, undefined, false, '', 0, Math.random()][Math.ceil(Math.random()*6)]);
  26. // var value3 = saver2()
  27. // var value4 = saver2()
  28. // console.log(value3 === value4);
  29. // let namePrompt = prompt.bind(window, 'Как тебя зовут?')
  30. // let nameSaver = makeSaver(namePrompt)
  31. // alert(`Привет! Prompt еще не было!`)
  32. // alert(`Привет ${nameSaver()}. Только что запустился prompt, первый и последний раз`)
  33. // alert(`Слушай, ${nameSaver()}, го пить пиво. Ведь prompt был только один раз`)
  34. //Final Countdown
  35. // function SelfInvoked (arg) {
  36. // console.log(arg);
  37. // arg = arg -1;
  38. // if (arg === 0) {
  39. // setTimeout(SelfInvoked, 1000, 'поехали!');
  40. // return;
  41. // }
  42. // if(arg) {
  43. // return setTimeout(SelfInvoked, 1000, arg);
  44. // }
  45. // return;
  46. // }
  47. // SelfInvoked(5);
  48. // myBind
  49. //debugger;
  50. function myBind (func, obj, arr) {
  51. return function (...arg) {
  52. let indexArg = 0;
  53. for (let i = 0; i < arr.length; i++) {
  54. if (!arr[i]) {
  55. arr[i] = arg[indexArg];
  56. indexArg++;
  57. }
  58. }
  59. let result = func.apply(obj, arr)
  60. return result;
  61. }
  62. }
  63. var pow5 = myBind(Math.pow, Math, [undefined, 5]);
  64. var cube = myBind(Math.pow, Math, [undefined, 3]);
  65. console.log(pow5(2));
  66. console.log(cube(3));
  67. var chessMin = myBind(Math.min, Math, [undefined, 4, undefined, 5,undefined, 8,undefined, 9]);
  68. console.log(chessMin(-1,-5,3,15));
  69. var zeroPrompt = myBind(prompt, window, [undefined, "0"]);
  70. var someNumber = zeroPrompt("Введите число") ;
  71. console.log(myBind((...params) => params.join(''), null, [undefined, 'b', undefined, undefined, 'e', 'f'])('a','c','d') === 'abcdef')