1+ 'use strict' ;
2+
3+ /*
4+ *
5+ * TASK 1
6+ *
7+ * Напишите функцию которая будет вызываться трижды и складывать
8+ * все передаваемые ей числа
9+ *
10+ * */
11+
12+ function add ( x ) {
13+ return function ( a ) {
14+ return function ( b ) {
15+ return x + a + b
16+ }
17+ }
18+ }
19+
20+ console . log ( add ( 1 ) ( 2 ) ( 3 ) ) ; // 6
21+ console . log ( add ( 10 ) ( 5 ) ( 15 ) ) ; // 30
22+
23+ // /*
24+ // *
25+ // * TASK 2
26+ // *
27+ // * Напишите функцию которая возвращает объект и одно из свойств объекта
28+ // * это функция
29+ // * После каждого нового вызова метода объекта(функции объекта) в консоле должно отображаться
30+ // * число на 1 больше чем предыдущее
31+ // * ---------------------------------------
32+ // * так же у объекта должен быть метод обнуления счетчика
33+ // * Узнать счетчик напрямую в объекте, нельзя
34+ // *
35+ // * */
36+
37+ function patternModule ( num ) {
38+ let counter = 0 ;
39+ let obj = {
40+ method : function ( ) {
41+ ++ counter
42+ return counter
43+ } ,
44+ method2 : function ( ) {
45+ counter = 0
46+ return counter
47+ }
48+ }
49+ return obj ;
50+
51+ }
52+
53+ // patternModule
54+
55+ let test = patternModule ( ) ; // 0
56+ console . log ( test . method ( ) ) ; //1
57+ console . log ( test . method ( ) ) ; //2
58+ console . log ( test . method ( ) ) ; //3
59+ console . log ( test . method ( ) ) ; //4
60+ console . log ( test . method ( ) ) ; //5
61+ console . log ( test . method ( ) ) ; //6
62+ console . log ( test . method2 ( ) ) ; //0
63+ console . log ( test . method ( ) ) ; //1
64+ console . log ( test . method ( ) ) ; //2
65+ console . log ( test . method ( ) ) ; //3
66+ console . log ( test . method2 ( ) ) ; //0
67+
68+
69+ // /*
70+ // * TASK 1
71+ // *
72+ // * Напишите функцию которая принимает 4 аргумента:
73+ // *
74+ // * - Объект
75+ // * - Имя свойства с которым связывается метод
76+ // * - Сколько раз можно вызвать метод *
77+ // * - Объявление привязываемого метода ( функция )
78+ // *
79+ // * При вызове метода отобразите сумму передаваемых
80+ // * параметров.
81+ // * Когда заканчивается счетчик, отображается ошибка
82+ // *
83+ // * */
84+
85+ let jun = { } ;
86+
87+ function methodCounter ( obj , name , num , fn ) {
88+ let counter = num ;
89+ obj [ name ] = function ( ...args ) {
90+ if ( counter > 0 ) {
91+ return [ counter -- , fn ( args ) ]
92+ }
93+ return `ERROR ! add more methods`
94+ }
95+ obj . addCounter = function ( newNum , name ) {
96+ // newName = name;
97+ counter = newNum ;
98+ return [ counter , name ] ;
99+ }
100+ } ;
101+
102+ methodCounter ( jun , 'logger' , 2 , function ( args ) {
103+ let sumArgs = args . reduce ( function ( newValue , elem ) {
104+ return newValue + elem
105+ } , 0 ) ;
106+ return sumArgs ;
107+ } ) ;
108+ console . log ( jun . logger ( 1 , 2 , 3 , 4 ) ) ; // 2, 10
109+ console . log ( jun . logger ( 5 , 5 , 5 , 5 ) ) ; // 1, 20
110+ console . log ( jun . logger ( 5 , 5 ) ) ; // ERROR ! add more methods
111+
112+ console . log ( jun . addCounter ( 10 , 'addCounter' ) ) ;
113+ console . log ( jun . logger ( 1 , 2 , 3 , 4 ) ) ; // 2, 10
114+ console . log ( jun . logger ( 1 , 2 , 3 , 4 ) ) ; // 2, 10
115+ console . log ( jun . logger ( 1 , 2 , 3 , 4 ) ) ; // 2, 10
116+ console . log ( jun . logger ( 1 , 2 , 3 , 4 ) ) ; // 2, 10
117+ console . log ( jun . logger ( 5 , 5 , 5 , 5 ) ) ; // 1, 20
118+ console . log ( jun . logger ( 5 , 5 , 5 , 5 ) ) ; // 1, 20
119+ console . log ( jun . logger ( 5 , 5 , 5 , 5 ) ) ; // 1, 20
120+ console . log ( jun . logger ( 5 , 5 , 5 , 5 ) ) ; // 1, 20
121+ console . log ( jun . logger ( 5 , 5 , 5 , 5 ) ) ; // 1, 20
122+ console . log ( jun . logger ( 5 , 5 , 5 , 5 ) ) ; // 1, 20
123+ console . log ( jun . logger ( 5 , 5 , 5 , 5 ) ) ; // 1, 20
124+ console . log ( jun . logger ( 5 , 5 , 5 , 5 ) ) ; // 1, 20
125+ console . log ( jun . logger ( 5 , 5 , 5 , 5 ) ) ; // 1, 20
126+
127+ // @SUPER ,
128+
129+ /*
130+ * Добавьте функции methodCounter, возможность увеличивать счетчик
131+ * на заданное число
132+ *
133+ * */
0 commit comments