script.js 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259
  1. // ------------------------------------1------------------------------------------
  2. // Создайте объект calculator с методами:
  3. // read() запрашивает prompt для двух значений и сохраняет их как свойства объекта x, y
  4. // sum() возвращает сумму этих двух значений
  5. // multi() возвращает произведение этих двух значений
  6. // diff() возвращает разницу
  7. // div() возвращает частное
  8. // оценочное время 60 мин
  9. // Потраченное время 15 мин
  10. // var calculator = {
  11. // x: '',
  12. // y: '',
  13. // getread: function() {
  14. // return this.x = +prompt('Enter x'), this.y = +prompt('Enter y');
  15. // },
  16. // getsum: function() {
  17. // return this.x + this.y;
  18. // },
  19. // getmulti: function() {
  20. // return this.x * this.y;
  21. // },
  22. // getdiff: function() {
  23. // return this.x - this.y;
  24. // },
  25. // getdiv: function() {
  26. // return this.x / this.y;
  27. // }
  28. // };
  29. // calculator.getread();
  30. // alert( calculator.getsum() );
  31. // alert( calculator.getmulti() );
  32. // alert( calculator.getdiff() );
  33. // alert( calculator.getdiv() );
  34. // ------------------------------------2------------------------------------------
  35. // Создайте объект coffeeMachine со свойством message: ‘Your coffee is ready!’
  36. // и методом start(), при вызове которого – coffeeMachine.start() –
  37. // через 3 секунды появляется окно с сообщением, записанным в свойстве объекта message.
  38. // оценочное время 60 мин
  39. // Потраченное время 15 мин
  40. // var coffeeMachine = {
  41. // mss: 'Your coffee is ready!',
  42. // getstart: function() {
  43. // return setTimeout(function(){
  44. // alert(this.mss);
  45. // }.bind(this), 3000)
  46. // }
  47. // };
  48. // coffeeMachine.getstart();
  49. // ------------------------------------3------------------------------------------
  50. // Создайте объект counter с методами увеличения, уменьшения значения счетчика
  51. // и методом возврата текущего значения. Используйте концепцию chaining для создания цепочки вызовов.
  52. // оценочное время 60 мин
  53. // Потраченное время 10 мин
  54. // var counter = {
  55. // count: 0,
  56. // getplus: function() {
  57. // this.count++;
  58. // return this;
  59. // },
  60. // getminus: function() {
  61. // this.count--;
  62. // return this;
  63. // }
  64. // };
  65. // counter.getplus().getplus().getplus().getplus().getplus().getminus().getminus();
  66. // alert(counter.count);
  67. // ------------------------------------4------------------------------------------
  68. // Создайте объект с данными: x, y и методами: getSum, getDiff, getMulti, getDiv.
  69. // Методы объекта ничего не реализуют, а только выводят в alert сообщения вида ‘1 + 1 = 2’ или ‘1 / 0 = Infinity’.
  70. // Для расчетов все методы используют функционал ранее созданного калькулятора.
  71. // оценочное время 60 мин
  72. // Потраченное время 300 мин
  73. // var calculator = {
  74. // x: '',
  75. // y: '',
  76. // getread: function() {
  77. // return this.x = +prompt('Enter x'), this.y = +prompt('Enter y');
  78. // },
  79. // getsum: function() {
  80. // return this.x + this.y;
  81. // },
  82. // getmulti: function() {
  83. // return this.x * this.y;
  84. // },
  85. // getdiff: function() {
  86. // return this.x - this.y;
  87. // },
  88. // getdiv: function() {
  89. // return this.x / this.y;
  90. // }
  91. // };
  92. // var objdata = {
  93. // getsum: function(a, b) {
  94. // calculator.x = a,
  95. // calculator.y = b,
  96. // alert( a + ' + ' + b +' = ' + calculator.getsum());
  97. // },
  98. // getmulti: function(a, b) {
  99. // calculator.x = a,
  100. // calculator.y = b,
  101. // alert(a + ' * ' + b +' = ' + calculator.getmulti());
  102. // },
  103. // getdiff: function(a, b) {
  104. // calculator.x = a,
  105. // calculator.y = b,
  106. // alert(a + ' - ' + b +' = ' + calculator.getdiff());
  107. // },
  108. // getdiv: function(a, b) {
  109. // calculator.x = a,
  110. // calculator.y = b,
  111. // alert(a + ' / ' + b +' = ' + calculator.getdiv());
  112. // }
  113. // };
  114. // objdata.getsum(1, 3);
  115. // objdata.getdiv(3, 5);
  116. // ------------------------------------5------------------------------------------
  117. // Есть следующий код:
  118. // Допишите код, чтобы в консоли браузера появились строки, которые написаны в комментариях:
  119. // format.call(/* Ваш код */); // Ukraine
  120. // format.apply(/* Ваш код */); // [Ukraine]
  121. // format.call(/* Ваш код */); // Kyiv
  122. // format.apply(/* Ваш код */); // Kyiv
  123. // format.apply(/* Ваш код */); // undefined
  124. // оценочное время 60 мин
  125. // Потраченное время 30 мин
  126. // var country = {
  127. // name: 'Ukraine',
  128. // language: 'ukrainian',
  129. // capital: {
  130. // name: 'Kyiv',
  131. // population: 2907817,
  132. // area: 847.66
  133. // }
  134. // };
  135. // function format(start, end) {
  136. // console.log(start + this.name + end);
  137. // }
  138. // format.call(country, ' ', ' '); // Ukraine
  139. // format.apply(country,['[', ']']); // [Ukraine]
  140. // format.call(country.capital, ' ', ' '); // Kyiv
  141. // format.apply(country.capital,[' ', ' ']); // Kyiv
  142. // format.apply(undefined, ['undefined', ' ']); // undefined
  143. // ------------------------------------6------------------------------------------
  144. // Создайте объект user с полем name. Создайте функцию format с параметрами start и end:
  145. // Привяжите функцию format() к объекту user таким образом, чтобы ее вызов возвращал отформатированное имя пользователя
  146. // userFormat('<<<', '>>>'); // <<<John>>>
  147. // Реализуйте 2 версии текущего задания, используя:
  148. // 1. Анонимную функцию;
  149. // 2. Метод bind().
  150. // оценочное время 120 мин
  151. // Потраченное время 30 мин
  152. // var user = {
  153. // name: 'Tony',
  154. // format: function(start, end) {
  155. // console.log(start + this.name + end);
  156. // }
  157. // };
  158. // user.format('<<<', '>>>');
  159. // var nwf = user.format.bind(user, '<<<', '>>>');
  160. // nwf();
  161. // var nwaf = (function(){
  162. // return user.format.call(user, '<<<','>>>');
  163. // })()
  164. // ------------------------------------7------------------------------------------
  165. // Напишите функцию concat, которая соединяет две строки, разделенные каким-то символом:
  166. // разделитель и строки передаются в параметрах функции. Используя карринг, создайте новую функцию hello,
  167. // которая которая выводит приветствие тому, кто передан в ее параметре:
  168. // hello('World'); // Hello World
  169. // hello('John'); // Hello John
  170. // оценочное время 30 мин
  171. // Потраченное время 10 мин
  172. // function concat(firstV, delimiter, secondV) {
  173. // return console.log(firstV + delimiter + secondV);
  174. // }
  175. // var hello = concat.bind(null, 'Hello', ' ');
  176. // hello('World');
  177. // hello('John');
  178. // ------------------------------------8------------------------------------------
  179. // Создайте объект со свойством delay и методами appendTo и appendText.
  180. // Метод appendTo с помощью jQuery добавляет абзац в контейнер, переданный в параметре метода.
  181. // Метод appendText может дописывает текст в добавленный элемент. Создайте массив строк и запустите цикл по этому массиву.
  182. // С периодичностью, определенной в свойстве delay, в текст созданного html-элемента добавляется соответствующий
  183. // по порядку элемент массива. Учтите, что для доступа к вашему элементу не должен производиться поиск по DOM-дереву.
  184. // оценочное время 120 мин
  185. // Потраченное время 240 мин
  186. // var arr = [ 'Д','ь','я','в','о','л',' ','н','е',' ','с','п','и','т','.',' ','С',' ','к','е','м',' ','п','о','п','а','л','о','.'];
  187. // var obj = {
  188. // delay: 50,
  189. // container: function(tag){
  190. // return this.tag = tag;
  191. // },
  192. // appendTo: function() {
  193. // $('<'+ this.tag + '>').css({
  194. // margin: '0 auto',
  195. // background: '#000',
  196. // color: '#fff',
  197. // 'text-align': 'center'
  198. // }).appendTo('body');
  199. // },
  200. // appendText: function(val){
  201. // $('<i>').css('font-size', '15px').text(val).appendTo(this.tag);
  202. // }
  203. // };
  204. // obj.container('div');
  205. // obj.appendTo();
  206. // for (i=0; i < arr.length; i++) {
  207. // (function() {
  208. // var j =i;
  209. // setTimeout(function() {
  210. // obj.appendText(arr[j]);
  211. // }, i * obj.delay);
  212. // })();
  213. // }
  214. // ------------------------------------рекурсия 1------------------------------------------
  215. // Напишите функцию, которая возвращает куб переданного числа, аналог Math.pow(x, 3)
  216. // – a) используя цикл b) используя рекурсию:
  217. // console.log( cube(2) ); // 8
  218. // оценочное время 240 мин
  219. // Потраченное время 30 мин
  220. // function cube(x) {
  221. // for (var i=0, result=1; i<3 ; i++) {
  222. // result = result * x;
  223. // }
  224. // return result;
  225. // }
  226. // console.log( cube(2) ); // 8
  227. // function rcube(x, count) {
  228. // if (count != 1) {
  229. // return x * rcube(x, count-1);
  230. // } else
  231. // return x;
  232. // }
  233. // console.log( rcube(2, 3) ); // 8
  234. // ------------------------------------рекурсия 2------------------------------------------
  235. // Придумайте алгоритм расчета суммы всех фактических параметров функции с использованием только рекурсии:
  236. // console.log( sum(1, 2, 3, 4, 5) ); // 15
  237. // оценочное время 240 мин
  238. // Потраченное время 30 мин
  239. function sum() {
  240. var arr=arguments[arguments.length-1];
  241. arguments.length--;
  242. if (arguments.length > 0)
  243. arr += sum.apply(null, arguments);
  244. return arr;
  245. }
  246. console.log( sum(1, 2, 3, 4, 5) ); // 15