|
@@ -0,0 +1,87 @@
|
|
|
+// --------------------------------------------------makeProfileTimer-------------------------------------------------------------------
|
|
|
+
|
|
|
+// function makeProfileTimer() {
|
|
|
+// let startTime = performance.now();
|
|
|
+// return function () {
|
|
|
+// return performance.now() - startTime;
|
|
|
+// }
|
|
|
+// };
|
|
|
+
|
|
|
+// const timer = makeProfileTimer();
|
|
|
+
|
|
|
+// timer();
|
|
|
+// alert('Замеряем время работы этого alert');
|
|
|
+// alert(`Time for this alert running is: ${timer()}`);
|
|
|
+
|
|
|
+// --------------------------------------------------makeSaver-------------------------------------------------------------------
|
|
|
+
|
|
|
+// function makeSaver(someFunc) {
|
|
|
+// let firstRun = true;
|
|
|
+// let saveResult;
|
|
|
+// return function() {
|
|
|
+// if(firstRun) {
|
|
|
+// saveResult = someFunc();
|
|
|
+// firstRun = false;
|
|
|
+// console.log(`Result is saved: ${saveResult}`);
|
|
|
+// }
|
|
|
+// return saveResult;
|
|
|
+// }
|
|
|
+// }
|
|
|
+
|
|
|
+// var saver = makeSaver(Math.random);
|
|
|
+
|
|
|
+// var value1 = saver();
|
|
|
+// var value2 = saver();
|
|
|
+// 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();
|
|
|
+
|
|
|
+// value3 === value4;
|
|
|
+
|
|
|
+// --------------------------------------------------Final Countdown-------------------------------------------------------------------
|
|
|
+
|
|
|
+// function finalCountdown(seconds) {
|
|
|
+// console.log(seconds);
|
|
|
+// if(seconds === 1) {
|
|
|
+// // console.log('"поехали!"'); // If it is necessary to write it immediately
|
|
|
+// // return; // Will write Gagarin's speech without delay
|
|
|
+// return setTimeout(() => console.log('"поехали!"'), 1000);
|
|
|
+// }
|
|
|
+// return setTimeout(finalCountdown, 1000, seconds - 1);
|
|
|
+
|
|
|
+// }
|
|
|
+
|
|
|
+// finalCountdown(5);
|
|
|
+
|
|
|
+// --------------------------------------------------myBind-----------------------------------------------------------------------
|
|
|
+
|
|
|
+function myBind(func, myThis, myArray) {
|
|
|
+ return function (...arguments) {
|
|
|
+ let count = 0;
|
|
|
+ let tempArray = myArray.map((value) =>
|
|
|
+ (value === undefined ? arguments[count++] : value)
|
|
|
+ );
|
|
|
+
|
|
|
+ // let tempArray;
|
|
|
+ // tempArray = myArray.map((value) => {
|
|
|
+ // ( value === undefined ? arguments[count++] : value)
|
|
|
+ // });
|
|
|
+ return func.call(myThis, ...tempArray);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+var pow5 = myBind(Math.pow, Math, [undefined, 5])
|
|
|
+var cube = myBind(Math.pow, Math, [undefined, 3])
|
|
|
+
|
|
|
+pow5(2) // => 32, вызывает Math.pow(2,5), соотнесите с [undefined, 5]
|
|
|
+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")
|
|
|
+
|
|
|
+myBind((...params) => params.join(''), null, [undefined, 'b', undefined, undefined, 'e', 'f'])('a', 'c', 'd') === 'abcdef'
|