ostapenkonataliia пре 2 година
родитељ
комит
ed665a8fc8
6 измењених фајлова са 323 додато и 142 уклоњено
  1. 20 16
      .idea/workspace.xml
  2. 12 0
      Js _11/index.html
  3. 123 0
      Js _11/js.js
  4. 1 1
      Js_10/index.html
  5. 165 125
      Js_10/js.js
  6. 2 0
      js.js

+ 20 - 16
.idea/workspace.xml

@@ -2,11 +2,12 @@
 <project version="4">
   <component name="ChangeListManager">
     <list default="true" id="c45bf7d2-992f-400a-8194-6f236ee5f805" name="Changes" comment="">
-      <change afterPath="$PROJECT_DIR$/Js_10/index.html" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/Js_10/js.js" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/Js _11/index.html" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/Js _11/js.js" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/js.js" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/Js_08/js.js" beforeDir="false" afterPath="$PROJECT_DIR$/Js_08/js.js" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/Js_09/js.js" beforeDir="false" afterPath="$PROJECT_DIR$/Js_09/js.js" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/Js_10/index.html" beforeDir="false" afterPath="$PROJECT_DIR$/Js_10/index.html" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/Js_10/js.js" beforeDir="false" afterPath="$PROJECT_DIR$/Js_10/js.js" afterDir="false" />
     </list>
     <option name="SHOW_DIALOG" value="false" />
     <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -34,19 +35,19 @@
     <option name="hideEmptyMiddlePackages" value="true" />
     <option name="showLibraryContents" value="true" />
   </component>
-  <component name="PropertiesComponent">{
-  &quot;keyToString&quot;: {
-    &quot;DefaultHtmlFileTemplate&quot;: &quot;HTML File&quot;,
-    &quot;RunOnceActivity.OpenProjectViewOnStart&quot;: &quot;true&quot;,
-    &quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
-    &quot;WebServerToolWindowFactoryState&quot;: &quot;false&quot;,
-    &quot;last_opened_file_path&quot;: &quot;C:/A-Level/Mark up&quot;,
-    &quot;list.type.of.created.stylesheet&quot;: &quot;CSS&quot;,
-    &quot;nodejs_package_manager_path&quot;: &quot;npm&quot;,
-    &quot;settings.editor.selected.configurable&quot;: &quot;project.propVCSSupport.DirectoryMappings&quot;,
-    &quot;vue.rearranger.settings.migration&quot;: &quot;true&quot;
+  <component name="PropertiesComponent"><![CDATA[{
+  "keyToString": {
+    "DefaultHtmlFileTemplate": "HTML File",
+    "RunOnceActivity.OpenProjectViewOnStart": "true",
+    "RunOnceActivity.ShowReadmeOnStart": "true",
+    "WebServerToolWindowFactoryState": "false",
+    "last_opened_file_path": "C:/js10",
+    "list.type.of.created.stylesheet": "CSS",
+    "nodejs_package_manager_path": "npm",
+    "settings.editor.selected.configurable": "project.propVCSSupport.DirectoryMappings",
+    "vue.rearranger.settings.migration": "true"
   }
-}</component>
+}]]></component>
   <component name="RecentsManager">
     <key name="MoveFile.RECENT_KEYS">
       <recent name="C:\A-Level\JS" />
@@ -84,6 +85,9 @@
       <workItem from="1669384123508" duration="1647000" />
       <workItem from="1669475690086" duration="3995000" />
       <workItem from="1669725693806" duration="34828000" />
+      <workItem from="1669843943175" duration="5002000" />
+      <workItem from="1669966012431" duration="34799000" />
+      <workItem from="1670226413389" duration="27634000" />
     </task>
     <servers />
   </component>

+ 12 - 0
Js _11/index.html

@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>Title</title>
+    <script src="js.js"></script>
+
+</head>
+<body>
+
+</body>
+</html>

+ 123 - 0
Js _11/js.js

@@ -0,0 +1,123 @@
+// 1. makeProfileTimer +
+// Напишите функцию makeProfileTimer, которая служит для замера времени выполнения другого кода и работает следующим образом:
+
+// {
+//     let time = performance.now();
+//     alert('Замеряем время работы этого alert');
+//     time = performance.now() - time;
+//     alert(`Время выполнения ${time}`)
+// }
+
+// {
+//     function makeProfileTimer () {
+//         let t0 = performance.now();
+//         alert('Замеряем время работы этого alert');
+//         let t1 = performance.now();
+//         return function () {
+//             return `Время работы этого alert ${t1-t0}`
+//         }
+//     }
+//
+//     let timer = makeProfileTimer()
+//     alert(timer())
+// }
+
+//2. makeSaver
+// Напишите функцию makeSaver, которая:
+
+//Таким образом makeSaver решает две задачи:
+//
+//     Навсегда сохраняет результат функции. Это актуально, например, для Math.random.
+//     Действует лениво, то есть вызывает Math.random только тогда, когда результат действительно нужен. Если же по
+//     каким-то причинам значение не понадобится, то Math.random даже не будет вызван
+
+// function makeSaver (fn) {
+//     return function bind () {
+//         return fn;
+//     }
+// }
+
+//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.ceil(Math.random()*6)])
+// let value3 = saver2();
+// let value4 = saver2();
+// console.log(value3())
+// console.log(value4())
+// console.log(value3 === value4)
+// ------------------------------------------------------------
+
+function makeSaver () {
+    return function bind() {
+        return name;
+    }
+}
+
+let namePrompt = prompt.bind(window, 'Как тебя зовут?');
+let nameSaver = makeSaver(namePrompt)
+alert(`Привет! Prompt еще не было!`)
+alert(`Привет ${nameSaver()}. Только что запустился prompt, первый и последний раз`)
+alert(`Слушай, ${nameSaver()}, го пить пиво. Ведь prompt был только один раз`)
+
+//3. myBind +
+// Изучите встроенную функцию bind, и сделайте свою версию, которая позволит определить "значение по умолчанию" не
+// только для первых параметров, но для любых других, например для степени в Math.pow:
+// {
+//     function myBind (func, place, parametr) {
+//         function wrapper () {
+//             let args = Object.assign(parametr, arguments);
+//             return func.apply(place, args);
+//         }
+//         return wrapper;
+//     }
+//
+//     let pow5 = myBind(Math.pow, Math, [, 5])
+//     console.log(pow5(2))
+//
+//     let cube = myBind(Math.pow, Math, [, 3]);
+//     console.log(cube(3))
+//
+//     let zeroPrompt = myBind(prompt, window, [undefined, '0'])
+//     let someNumber = zeroPrompt("Введите число");
+//     alert(someNumber)
+//
+//     let chessMin = myBind(Math.min, Math, [ 4, 5, 8, 9]);
+//     console.log(chessMin(-1,-10,3,15))
+//
+//     const bindedJoiner = myBind((...params) => params.join(''), null, [ ,'b', , ,'e','f'])
+//     console.log(bindedJoiner('a','c','d'))
+//}
+
+
+//4. checkResult
+// Напишите декоратор checkResult, который:
+//
+//     принимает функцию для запуска и проверки результата (оригинал)
+//     принимает функцию для проверки результата (валидатор)
+//     возвращает обертку, которая запускает оригинал до тех пор, пока оригинал не вернет значение, удовлетворяющее
+//     функции-валидатору. В валидатор передается результат оригинальной функции. Если валидатор возвращает true, то
+//     обертка возвращает результат оригинальной функции. Если валидатор возвращает что-то другое, то оригинал
+//     запускается еще, пока валидатор не вернет true.
+
+// function checkResult (original, validator) {
+//     function wrapper(...params){
+//
+//     }
+//     return wrapper
+// }
+//
+//
+// //numberPrompt - это функция, которая будет запускать prompt до тех пор, пока пользователь не введет число
+// const numberPrompt = checkResult(prompt, x => !isNaN(+x))
+// let   number       = +numberPrompt("Введите число", "0")  //параметры передаются насквозь в оригинал. Не забудьте передать this, используя call или apply
+//
+// //gamePrompt - это функция, которая будет запускать prompt до тех пор, пока пользователь не введет одно из слов 'камень', 'ножницы', 'бумага'
+// const gamePrompt   = checkResult(prompt, x => ['камень', 'ножницы', 'бумага'].includes(x.toLowerCase()))
+// const turn         = gamePrompt("Введите что то из списка: 'камень', 'ножницы', 'бумага'")
+//

+ 1 - 1
Js_10/index.html

@@ -3,9 +3,9 @@
 <head>
     <meta charset="UTF-8">
     <title>Title</title>
-    <script src="js.js"></script>
 </head>
 <body>
+<script src="js.js"></script>
 
 </body>
 </html>

Разлика између датотеке није приказан због своје велике величине
+ 165 - 125
Js_10/js.js


+ 2 - 0
js.js

@@ -0,0 +1,2 @@
+p = 1111;
+console.log(p)