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+ // return ++counter
42+ // },
43+ // method2: function(){
44+ // return counter = 0
45+ // }
46+ // }
47+ // return obj;
48+
49+ // }
50+
51+ // // patternModule
52+
53+ // let test = patternModule(); // 0
54+ // console.log(test.method()); //1
55+ // console.log(test.method()); //2
56+ // console.log(test.method()); //3
57+ // console.log(test.method()); //4
58+ // console.log(test.method()); //5
59+ // console.log(test.method()); //6
60+ // console.log(test.method2()); //0
61+ // console.log(test.method()); //1
62+ // console.log(test.method()); //2
63+ // console.log(test.method()); //3
64+ // console.log(test.method2()); //0
65+
66+
67+ // /*
68+ // * TASK 1
69+ // *
70+ // * Напишите функцию которая принимает 4 аргумента:
71+ // *
72+ // * - Объект
73+ // * - Имя свойства с которым связывается метод
74+ // * - Сколько раз можно вызвать метод *
75+ // * - Объявление привязываемого метода ( функция )
76+ // *
77+ // * При вызове метода отобразите сумму передаваемых
78+ // * параметров.
79+ // * Когда заканчивается счетчик, отображается ошибка
80+ // *
81+ // * */
82+
83+ let jun = { } ;
84+
85+ function methodCounter ( obj , name , num , fn ) {
86+ obj [ name ] = function ( ...args ) {
87+ if ( num > 0 ) {
88+ return [ num -- , fn ( args ) ]
89+ }
90+ return `ERROR ! add more methods`
91+ }
92+ } ;
93+
94+ methodCounter ( jun , 'logger' , 2 , function ( args ) {
95+ let sumArgs = args . reduce ( function ( newValue , elem ) {
96+ return newValue + elem
97+ } , 0 ) ;
98+ return sumArgs ;
99+ } ) ;
100+ console . log ( jun . logger ( 1 , 2 , 3 , 4 ) ) ; // 2, 10
101+ console . log ( jun . logger ( 5 , 5 , 5 , 5 ) ) ; // 1, 20
102+ console . log ( jun . logger ( 5 , 5 ) ) ; // ERROR ! add more methods
103+
104+ // jun.addCounter(10, methodName);
105+ // @SUPER ,
106+
107+ /*
108+ * Добавьте функции methodCounter, возможность увеличивать счетчик
109+ * на заданное число
110+ *
111+ * */
0 commit comments