123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- // makeProfileTimerWrapp()
- function makeProfileTimerWrapp() {
- function makeProfileTimer() {
- let time1 = performance.now()
- return function () {
- let time2 = performance.now()
- return time2 - time1
- }
- }
- let timer = makeProfileTimer()
- alert('Замеряем время работы этого alert')
- alert(timer())
- }
- // makeSaverWrapp()
- function makeSaverWrapp() {
- function makeSaver(func) {
- let storage = null
- let label = false
- return function () {
- if (label === false) {
- label = true
- storage = func()
- return storage
- } else {
- return storage
- }
- }
- }
- let saver = makeSaver(Math.random)
- let value1 = saver()
- let value2 = saver()
- console.log(value1)
- console.log(value2)
- console.log(value1 === value2)
- {
- let saver2 = makeSaver(() => console.log('saved function called') || [null, undefined, false, '', 0, Math.random()][Math.floor(Math.random()*6)])
- let value3 = saver2()
- let value4 = saver2()
- console.log(value3, value4)
- }
- {
- let saver2 = makeSaver(() => console.log('saved function called') || [null, undefined, false, '', 0, Math.random()][Math.floor(Math.random()*6)])
- let value3 = saver2()
- let value4 = saver2()
- console.log(value3, value4)
- }
- let namePrompt = prompt.bind(window, 'Как тебя зовут?')
- let nameSaver = makeSaver(namePrompt)
- alert(`Привет! Prompt еще не было!`)
- alert(`Привет ${nameSaver()}. Только что запустился prompt, первый и последний раз`)
- alert(`Слушай, ${nameSaver()}, го пить пиво. Ведь prompt был только один раз`)
- }
- // finalCountdownWrapp()
- function finalCountdownWrapp() {
- let i = 0;
- (function loop() {
- setTimeout(function () {
- console.log(++i)
- loop()
- }, 1000)
- })()
- }
- // myBindWrapp()
- function myBindWrapp() {
- function myBind(func, funcThis, array) {
- return function (...newParams) {
- let args = () => {
- let newArr = []
- let i = 0
- for (const el of array) {
- if (el === undefined) {
- newArr.push(newParams[i])
- i++
- } else {
- newArr.push(el)
- }
- }
- let restParams = newParams.slice(i)
- return [...newArr, ...restParams]
- }
- // console.log(args())
- return func.apply(funcThis, args())
- }
- }
- let pow5 = myBind(Math.pow, Math, [undefined, 5])
- let cube = myBind(Math.pow, Math, [undefined, 3])
- pow5(2)
- cube(3)
- console.log(pow5(2))
- console.log(cube(3))
- let chessMin = myBind(Math.min, Math, [undefined, 4, undefined, 5,undefined, 8,undefined, 9])
- chessMin(-1,-5,3,15)
- console.log(chessMin(-1,-5,3,15))
- let zeroPrompt = myBind(prompt, window, [undefined, "0"])
- let someNumber = zeroPrompt("Введите число")
- myBind((...params) => params.join(''), null, [undefined, 'b', undefined, undefined, 'e', 'f'])('a','c','d') === 'abcdef'
- console.log(myBind((...params) => params.join(''), null, [undefined, 'b', undefined, undefined, 'e', 'f'])('a','c','d','UU','AA'))
- }
|