Skip to content

Commit 2f1dc90

Browse files
Balashov NikitaOlegLustenko
authored andcommitted
homework-7
1 parent 317d151 commit 2f1dc90

File tree

2 files changed

+136
-0
lines changed

2 files changed

+136
-0
lines changed
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8">
5+
<title>Home work 7</title>
6+
</head>
7+
<body>
8+
9+
<script src="src/main.js"></script>
10+
</body>
11+
</html>
Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
'use strict';
2+
3+
/*
4+
*
5+
* TASK 1
6+
*
7+
* Напишите функцию которая будет вызываться трижды и складывать
8+
* все передаваемые ей числа
9+
*
10+
* */
11+
12+
function add(x) {
13+
return function(y){
14+
return function(z){
15+
return x + y + z;
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() {
38+
let counter = 0;
39+
const obj = {
40+
method: function() {
41+
return ++counter;
42+
},
43+
reset: function() {
44+
counter = 0;
45+
return counter;
46+
},
47+
};
48+
return obj;
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.reset()); //0
58+
console.log(test.method()); //1
59+
console.log(test.method()); //2
60+
console.log(test.method()); //3
61+
62+
/*
63+
* TASK 1
64+
*
65+
* Напишите функцию которая принимает 4 аргумента:
66+
*
67+
* - Объект
68+
* - Имя свойства с которым связывается метод
69+
* - Сколько раз можно вызвать метод *
70+
* - Объявление привязываемого метода ( функция )
71+
*
72+
* При вызове метода отобразите сумму передаваемых
73+
* параметров.
74+
* Когда заканчивается счетчик, отображается ошибка
75+
*
76+
* */
77+
78+
let jun = {};
79+
80+
function methodCounter(obj, name, num, fn) {
81+
obj[name] = fn;
82+
obj.counter = num;
83+
obj.addCounter = function (quantity) {
84+
obj.counter += quantity;
85+
return console.log(`Counter was replenished on ${obj.counter}`);
86+
};
87+
return function () {
88+
return obj;
89+
};
90+
}
91+
92+
function sumLogger () {
93+
let arrayWithArguments = [...arguments];
94+
95+
if(jun.counter > 0) {
96+
--jun.counter;
97+
98+
const sumArguments = arrayWithArguments.reduce(function(newValue, value) {
99+
return newValue + value;
100+
}, 0);
101+
102+
return console.log(`You can use this method else: ${jun.counter}; sum of arguments equal: ${sumArguments}.`);
103+
104+
} else {
105+
return console.log(`ERROR ! add more methods`);
106+
}
107+
}
108+
109+
110+
methodCounter(jun, 'logger', 2, sumLogger);
111+
112+
jun.logger(1, 2, 3, 4); // 2, 10
113+
jun.logger(5, 5, 5, 5); // 1, 20
114+
jun.logger(5, 5); // ERROR ! add more methods
115+
116+
// @SUPER,
117+
118+
/*
119+
* Добавьте функции methodCounter, возможность увеличивать счетчик
120+
* на заданное число
121+
*
122+
* */
123+
124+
jun.addCounter(10);
125+
jun.logger(5, 5);

0 commit comments

Comments
 (0)