Alyona Brytvina 2 年 前
コミット
6f54ade3fe
3 ファイル変更162 行追加0 行削除
  1. 12 0
      HW10/index.html
  2. 114 0
      HW10/main.js
  3. 36 0
      HW10/style.css

+ 12 - 0
HW10/index.html

@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>HW10</title>
+    <link rel="stylesheet" href="style.css">
+</head>
+<body>
+<ol class="list"></ol>
+<script src="main.js"></script>
+</body>
+</html>

+ 114 - 0
HW10/main.js

@@ -0,0 +1,114 @@
+function runMakeProfileTimer() {
+    function makeProfileTimer() {
+        let time = performance.now();
+        return function () {
+            time = performance.now() - time;
+            alert(`Время выполнения кода ${time}`);
+        };
+    }
+
+    let result = makeProfileTimer();
+    result();
+}
+
+function runMakeSaver() {
+    function makeSaver(random) {
+        let result = random();
+        return function () {
+            return result;
+        };
+
+    }
+
+    var saver = makeSaver(Math.random);
+    var value1 = saver();
+    var value2 = saver();
+    console.log(value1 === value2);
+
+    var saver2 = makeSaver(() => console.log('saved function called') || [null, undefined, false, '', 0, Math.random()][Math.ceil(Math.random() * 6)]);
+    var value3 = saver2();
+    var value4 = saver2();
+    console.log(value3 === value4);
+}
+
+function runFinalCountdown() {
+    (function () {
+        let number = 5;
+
+        function count() {
+
+            if (!number) {
+                console.log('поехали!');
+                clearInterval(timer);
+            } else {
+                number--;
+            }
+        }
+
+        let timer = setInterval(count, 1000);
+    })();
+}
+
+// (function runIEfy() {
+//     let time = new Date()
+//     let seconds = time.getSeconds();
+//     setTimeout(function () {
+//         runIEfy()
+//         console.log(seconds)
+//     }, 1000)
+//
+// })()
+
+function runMyBind() {
+    function myBind(func, context, arr) {
+        let newArr = arr;
+        return function (...args) {
+            args.forEach(arg => {
+                let index = newArr.indexOf(undefined);
+                newArr[index] = arg;
+            });
+            return func(...newArr);
+        };
+
+    }
+
+    var pow5 = myBind(Math.pow, Math, [undefined, 5]);
+    var cube = myBind(Math.pow, Math, [undefined, 3]);
+
+    pow5(2);
+    cube(3);
+
+    var chessMin = myBind(Math.min, Math, [undefined, 4, undefined, 5, undefined, 8, undefined, 9]);
+    console.log(chessMin(-1, -5, 3, 15));
+
+    var zeroPrompt = myBind(prompt, window, [undefined, '0']);
+    var someNumber = zeroPrompt('Введите число');
+    myBind((...params) => params.join(''), null, [undefined, 'b', undefined, undefined, 'e', 'f'])('a', 'c', 'd') === 'abcdef';
+}
+
+const tasksArray = [
+    ['make Profile Timer', runMakeProfileTimer],
+    ['make Saver', runMakeSaver],
+    ['final Countdown', runFinalCountdown],
+    ['my Bind', runMyBind],
+];
+
+const $list = document.querySelector('.list');
+tasksArray.forEach(task => {
+    const [name, callback] = task;
+
+    const $div = document.createElement('div');
+    $div.className = 'div';
+
+    let $button = document.createElement('button');
+    $button.textContent = 'Запустить';
+    $button.className = 'button';
+    $button.onclick = callback;
+    $div.appendChild($button);
+
+    const $li = document.createElement('li');
+    $li.className = 'li';
+    $li.textContent = name;
+    $div.appendChild($li);
+    $list.appendChild($div);
+});

+ 36 - 0
HW10/style.css

@@ -0,0 +1,36 @@
+.list {
+    display: flex;
+    justify-content: center;
+    flex-direction: column;
+}
+
+.li {
+    text-decoration: none;
+}
+
+.div {
+    display: flex;
+    align-items: center;
+}
+
+.button {
+    margin: 5px 15px;
+    height: 25px;
+    border: 1px solid tan;
+    border-radius: 3px;
+    cursor: pointer;
+    background-color: cornsilk;
+    color: darkred;
+    position: relative;
+    font-weight: 600;
+    left: 10px;
+}
+
+.button:hover {
+    height: 25px;
+    border: 1px solid darkred;
+    border-radius: 3px;
+    cursor: pointer;
+    background-color: darkred;
+    color: white;
+}