|
@@ -0,0 +1,92 @@
|
|
|
+//1.makeProfileTimer
|
|
|
+// function makeProfileTimer(){
|
|
|
+// let time = performance.now();
|
|
|
+// return function sec(){
|
|
|
+// return time * 1000;
|
|
|
+// };
|
|
|
+// }
|
|
|
+// let timer = makeProfileTimer();
|
|
|
+// alert('Замеряем время работы этого alert');
|
|
|
+// alert(timer());
|
|
|
+
|
|
|
+//2.makeSaver
|
|
|
+// function makeSaver (fn){
|
|
|
+// return function(){
|
|
|
+// fn();
|
|
|
+// }
|
|
|
+// }
|
|
|
+
|
|
|
+// function al(){
|
|
|
+// let namePrompt = prompt.bind(window, 'Как тебя зовут?');
|
|
|
+// let nameSaver = makeSaver(namePrompt);
|
|
|
+
|
|
|
+// alert(`Привет! Prompt еще не было!`);
|
|
|
+// alert(`Привет ${nameSaver()}. Только что запустился prompt, первый и последний раз`);
|
|
|
+// alert(`Слушай, ${nameSaver()}, го пить пиво. Ведь prompt был только один раз`);
|
|
|
+// }
|
|
|
+
|
|
|
+// al();
|
|
|
+
|
|
|
+// let saver = makeSaver(Math.random);
|
|
|
+// let value1 = saver();
|
|
|
+// let value2 = saver();
|
|
|
+
|
|
|
+// console.log(value1 === value2);
|
|
|
+
|
|
|
+// let saver2 = makeSaver(() => console.log('saved function called') || [null, undefined, false, '', 0, Math.random()][Math.ceil(Math.random()*6)]);
|
|
|
+// let value3 = saver2();
|
|
|
+// let value4 = saver2();
|
|
|
+
|
|
|
+// console.log(value3 === value4);
|
|
|
+
|
|
|
+//3.Final Countdown
|
|
|
+// let counter = 5;
|
|
|
+
|
|
|
+// function selfInvoked(){
|
|
|
+// console.log(counter);
|
|
|
+// let timer = setTimeout(() => {
|
|
|
+// selfInvoked()
|
|
|
+// }, 1000);
|
|
|
+
|
|
|
+// if(counter > 1){
|
|
|
+// return function (){
|
|
|
+// return counter--;
|
|
|
+// }();
|
|
|
+// }
|
|
|
+// clearInterval(timer);
|
|
|
+
|
|
|
+// if(counter === 1){
|
|
|
+// console.log('поехали!');
|
|
|
+// }
|
|
|
+// }
|
|
|
+// selfInvoked();
|
|
|
+
|
|
|
+//4.myBind
|
|
|
+// function myBind(fnBind, context, fn){
|
|
|
+// return function(...args){
|
|
|
+// let i = 0;
|
|
|
+// let array = fn.map((arr) => {
|
|
|
+// if (arr === undefined) {
|
|
|
+// const argsEl = args[i];
|
|
|
+// i += 1;
|
|
|
+// return argsEl;
|
|
|
+// } else {
|
|
|
+// return arr;
|
|
|
+// }
|
|
|
+// });
|
|
|
+// return fnBind.apply(context, array);
|
|
|
+// };
|
|
|
+// }
|
|
|
+
|
|
|
+// let pow5 = myBind(Math.pow, Math, [undefined, 5]);
|
|
|
+// let cube = myBind(Math.pow, Math, [undefined, 3]);
|
|
|
+// let chessMin = myBind(Math.min, Math, [undefined, 4, undefined, 5,undefined, 8,undefined, 9]);
|
|
|
+
|
|
|
+// console.log(pow5(2));
|
|
|
+// console.log(cube(3));
|
|
|
+// console.log(chessMin(-1, -5, 3, 15));
|
|
|
+
|
|
|
+// let zeroPrompt = myBind(prompt, window, [undefined, "0"]);
|
|
|
+// let someNumber = zeroPrompt("Введите число");
|
|
|
+
|
|
|
+// console.log(myBind((...params) => params.join(''), null, [undefined, 'b', undefined, undefined, 'e', 'f'])('a','c','d') === 'abcdef');
|