main.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. //profiletimer
  2. function makeProfileTimer() {
  3. let start = performance.now ()
  4. function finishOfTime () {
  5. let finish = performance.now()
  6. return (finish - start) / 1000;
  7. }
  8. return finishOfTime;
  9. }
  10. var timer = makeProfileTimer()
  11. alert('Замеряем время работы этого alert');
  12. alert(timer())
  13. //makesaver
  14. function makeSaver (fn){
  15. let result;
  16. let somethingThatHelp = true ;
  17. return () => {
  18. if (somethingThatHelp){
  19. result = fn();
  20. }
  21. somethingThatHelp = false
  22. return result
  23. }
  24. }
  25. let nameSaver = makeSaver(() => prompt('введите имя'))
  26. alert ('имя еще не спрашивали')
  27. let name1 = nameSaver()
  28. alert ('just ask name')
  29. let name2 = nameSaver()
  30. alert ("tho times ask?")
  31. alert ("hello , " + nameSaver() + (nameSaver() === nameSaver() ? ". done" : 'shit happens'))
  32. //finalCountdouwn
  33. function finalCountdown() {
  34. let countdown = 5;
  35. function someFunction() {
  36. console.log(countdown--)
  37. }
  38. if (!countdown){
  39. clearTimeout(timer)
  40. }
  41. for (let i = 1; i <6; i++){
  42. let timer = setTimeout(someFunction , 1000*i)
  43. }
  44. }
  45. finalCountdown()
  46. //myBind
  47. function myBind (funcn, context, arr) {
  48. return (...params) => {
  49. let indexParam = 0;
  50. let newArray = arr.map((i) => (i === undefined ? params[indexParam++] : i))
  51. return func.call(context, ...newArray)
  52. }
  53. }
  54. var pow5 = myBind(Math.pow, Math, [undefined, 5])
  55. var cube = myBind(Math.pow, Math, [undefined, 3])
  56. alert(pow5(2)) // => 32, вызывает Math.pow(2,5), соотнесите с [undefined, 5]
  57. alert (cube(3)) // => 27
  58. var chessMin = myBind(Math.min, Math, [undefined, 4, undefined, 5,undefined, 8,undefined, 9])
  59. chessMin(-1,-5,3,15) // вызывает Math.min(-1, 4, -5, 5, 3, 8, 15, 9), результат -5
  60. var zeroPrompt = myBind(prompt, window, [undefined, "0"])
  61. var someNumber = zeroPrompt("Введите число") // вызывает prompt("Введите число","0")
  62. console.log(myBind((...params) => params.join(''), null, [undefined, 'b', undefined, undefined, 'e', 'f'])('a','c','d') === 'abcdef')