Vadym Hlushko hace 2 años
padre
commit
3d2a62c550
Se han modificado 2 ficheros con 90 adiciones y 0 borrados
  1. 11 0
      hw10/index.html
  2. 79 0
      hw10/main.js

+ 11 - 0
hw10/index.html

@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>Document</title>
+</head>
+<body>
+    <script src="main.js"></script>
+</body>
+</html>

+ 79 - 0
hw10/main.js

@@ -0,0 +1,79 @@
+//profiletimer
+function makeProfileTimer() {
+    let start = performance.now ()
+    function finishOfTime () {
+        let finish = performance.now()
+        return (finish - start) / 1000;
+    }
+    return finishOfTime;
+}
+
+var timer = makeProfileTimer()
+alert('Замеряем время работы этого alert');  
+alert(timer())
+
+
+//makesaver
+function makeSaver (fn){
+    let result;
+    let somethingThatHelp = true ;
+      return () => {
+        if (somethingThatHelp){
+        result = fn();
+        }
+        somethingThatHelp = false
+        return result
+        }
+      }
+    
+    let nameSaver = makeSaver(() => prompt('введите имя'))
+    alert ('имя еще не спрашивали')
+    let name1 = nameSaver()
+    alert ('just ask name')
+    let name2 = nameSaver()
+    alert ("tho times ask?")
+    alert ("hello , " + nameSaver() + (nameSaver() === nameSaver() ? ". done" : 'shit happens'))
+
+    //finalCountdouwn
+    function finalCountdown() {
+        let countdown = 5; 
+        function someFunction() {
+          console.log(countdown--)
+        }
+        if (!countdown){
+          clearTimeout(timer)
+        }
+        for (let i = 1; i <6; i++){
+        let timer = setTimeout(someFunction , 1000*i)
+        }
+      }
+      
+      finalCountdown()
+
+      //myBind
+
+      function myBind (funcn, context, arr) {
+        return (...params) => {
+            let indexParam = 0;
+            let newArray = arr.map((i) => (i === undefined ? params[indexParam++] : i))
+            return func.call(context, ...newArray)
+        }
+    }
+      
+      var pow5 = myBind(Math.pow, Math, [undefined, 5])  
+      var cube = myBind(Math.pow, Math, [undefined, 3]) 
+      
+      alert(pow5(2)) // => 32, вызывает Math.pow(2,5), соотнесите с [undefined, 5]
+      alert (cube(3)) // => 27
+      
+      
+      var chessMin = myBind(Math.min, Math, [undefined, 4, undefined, 5,undefined, 8,undefined, 9])
+      chessMin(-1,-5,3,15) // вызывает Math.min(-1, 4, -5, 5, 3, 8, 15, 9), результат -5
+      
+      
+      
+      var zeroPrompt = myBind(prompt, window, [undefined, "0"])
+      var someNumber = zeroPrompt("Введите число")              // вызывает prompt("Введите число","0")
+      
+      console.log(myBind((...params) => params.join(''), null, [undefined, 'b', undefined, undefined, 'e', 'f'])('a','c','d') === 'abcdef')
+