|
@@ -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);
|
|
|
+});
|