Skip to content

Commit b0d20a7

Browse files
Balashov NikitaOlegLustenko
authored andcommitted
homework-10 witout super
1 parent 7769844 commit b0d20a7

File tree

2 files changed

+153
-0
lines changed

2 files changed

+153
-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 10</title>
6+
</head>
7+
<body>
8+
9+
<script src="src/main.js"></script>
10+
</body>
11+
</html>
Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
/*
2+
*
3+
* Задача 0
4+
*
5+
* Что вернет выражение z(x) ?
6+
* Напишите ответ своими словами как вы понимаете
7+
* В консоле не смотрите, сначала напишите, после проверьте себя
8+
*
9+
* */
10+
11+
let y = 5;
12+
let x = () => y;
13+
14+
let z = t => {
15+
let y = 5;
16+
t();
17+
};
18+
console.log(y);
19+
20+
z(x); // что вернет
21+
/* 5 */
22+
23+
/*
24+
*
25+
* TASK 1
26+
* Создайте функцию которая будет превращать
27+
* передаваемую строку в html тэг
28+
*
29+
*
30+
* */
31+
32+
let $ = tagName => {
33+
return `<${tagName}></${tagName}>`
34+
};
35+
36+
let createBODY = $('body');
37+
let createDIV = $('div');
38+
console.log(createBODY); // <body></body>
39+
console.log(createDIV); // <div></div>
40+
41+
/*
42+
*
43+
* TASK 2
44+
*
45+
* Создайте объект к которому можно будет применить любое число вызовов
46+
// obj.method().method().method()
47+
---------------
48+
* Передаваемое значение должно возвращаться в виде html тэгов (TASK 1)
49+
* Передаваемые аргументы должны быть только в виде строки
50+
* *//*
51+
{
52+
let ezjQuery = {
53+
collector: '',
54+
add(tagName) {
55+
const tag = `<${tagName}></${tagName}>`;
56+
this.collector += tag;
57+
console.log(this.collector);
58+
return this;
59+
}
60+
};
61+
62+
63+
ezjQuery
64+
.add('body') // <body></body>
65+
.add('div') // <body></body><div></div>
66+
.add('h1'); // <body></body><div></div><h1></h1>
67+
} */
68+
/*
69+
*
70+
* TASK 3
71+
* Доработйте метод add чтобы на каждом вызове следующий
72+
* тэг помещался внутри предыдущего !
73+
---
74+
* И добавьте объекту ezjQuery метод render, который будет возвращать
75+
* сгенерированную строку
76+
-----
77+
* Методу add - второй параметр, который будет размещать
78+
* информацию внутри тэга
79+
*
80+
*/
81+
82+
let ezjQuery = {
83+
collector: [],
84+
arrayWithOpenTags: [],
85+
arrayWithClosenTags: [],
86+
arrayWithStuctureWithValue: [],
87+
add(tagName, value) {
88+
if([...arguments].length === 1) {
89+
const openTag = `<${tagName}>`;
90+
const closenTag = `</${tagName}>`;
91+
this.arrayWithOpenTags.push(openTag);
92+
this.arrayWithClosenTags.unshift(closenTag);
93+
}
94+
if([...arguments].length === 2) {
95+
const stuctureWithValue = `<${tagName}>${value}</${tagName}>`;
96+
this.arrayWithStuctureWithValue.push(stuctureWithValue);
97+
}
98+
99+
return this;
100+
},
101+
render() {
102+
const copyCollector = this.collector;
103+
const firstIterationOfConcat = copyCollector.concat(this.arrayWithOpenTags);
104+
const secondIterationOfConcat = firstIterationOfConcat.concat(this.arrayWithStuctureWithValue);
105+
const thirdIterationOfConcat = secondIterationOfConcat.concat(this.arrayWithClosenTags);
106+
107+
this.arrayWithOpenTags = [];
108+
this.arrayWithClosenTags = [];
109+
this.arrayWithStuctureWithValue = [];
110+
111+
return thirdIterationOfConcat.join('');
112+
}
113+
};
114+
115+
// example
116+
var helloList = ezjQuery
117+
.add('body') // <body></body>
118+
.add('div') // <body><div></div></body>
119+
.add('ul') // <body><div><ul></ul></div></body>
120+
.add('li', 'Hello') //<body><div><ul><li>Hello</li></ul></div></body>
121+
.render();
122+
console.log(helloList); // <body><div><ul><li>Hello</li></ul></div></body>
123+
// Обратите внимание, что после вызова render создание строки началось сначала
124+
document.write(helloList);
125+
126+
var bodyDiv = ezjQuery
127+
.add('body') //<body></body>
128+
.add('div') //<body><div></div></body>
129+
.render();
130+
console.log(bodyDiv); //<body><div></div></body>
131+
132+
// Для выполнивших все задания
133+
// сделайте document.write(helloList) увидите результат :)
134+
135+
// @SUPER
136+
/*
137+
* Переименуйте объект ezjQuery в $.
138+
* Создание перевого метода должено быть без метода
139+
*
140+
* $('body').add('li', 'hi').render() // <body><li>hi</li></body>
141+
*
142+
* */

0 commit comments

Comments
 (0)