Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 56 additions & 0 deletions 1.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Homework</title>
</head>
<body>
<!--
Обязательное задание.

Необходимо данное задание выполнить в es5 стиле и в es6 стиле.
Необходимо создать функцию-конструктор/класс для продукта.
Названия: `ProductES5` для es5 стиля, `ProductES6` для es6 стиля.
При создании объекта от функции-конструктора/класса необходимо передавать имя
и цену товара, эта информация должна быть сохранена в объекте.
Также у объекта должна быть возможность выполнить метод `make25Discount`, данный
метод должен уменьшать стоимость продукта на 25%.
Необходимо продемонстрировать работу с объектом (в свободной форме).
-->
<script>
"use strict";

function ProductES5(name, cost) {
this.name = name;
this.cost = cost;
}

ProductES5.prototype.make25Discount = function () {
this.cost = this.cost - this.cost * 25 / 100;
}

const prod1 = new ProductES5('orange', 55);

console.log(`Name: ${prod1.name}, cost: ${prod1.cost}`);
prod1.make25Discount();
console.log(`Name: ${prod1.name}, cost: ${prod1.cost}`);

class ProductES6 {
constructor(name, cost) {
this.name = name;
this.cost = cost;
}
make25Discount() {
this.cost = this.cost - this.cost * 25 / 100;
}
}

const prod2 = new ProductES6('apple', 100);

console.log(`Name: ${prod2.name}, cost: ${prod2.cost}`);
prod2.make25Discount();
console.log(`Name: ${prod2.name}, cost: ${prod2.cost}`);

</script>
</body>
</html>
126 changes: 126 additions & 0 deletions 2.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Homework</title>
</head>
<body>
<!--
Обязательное задание.

Необходимо данное задание выполнить в es5 стиле и в es6 стиле.
Необходимо создать функцию-конструктор/класс для поста в социальной сети.
Названия: `PostES5` для es5 стиля и `PostES6` для es6 стиля.
Пост должен хранить:
1. Автора поста (имени достаточно).
2. Текст поста.
3. Дату и время последнего изменения поста.
Данные автора поста и текст поста необходимо передавать при создании
экземпляра объекта.
Каждому экземпляру объекта должен быть доступен метод `edit`, который будет
менять текст поста.

---

Необходимо создать функцию-конструктор/класс для закрепленного поста в
социальной сети.
Названия: `AttachedPostES5` для es5 стиля и `AttachedPostES6` для es6 стиля.
Закрепленный пост должен наследоваться от обычного поста.
Данные автора поста и текст поста необходимо передавать при создании
экземпляра объекта.
Закрепленный пост должен иметь свойство `highlighted`, в котором по умолчанию
будет лежать значение false (это свойство будет обозначать, будет ли наш
закрепленный пост подсвечен).
У экземпляров объекта закрепленного поста должен быть метод с названием
`makeTextHighlighted`, который сделает так, чтобы наш пост стал подсвеченным
(будет менять свойство `highlighted`).

---

Подсказки:
1. Задание сложное, советую делать по аналогии с примером на онлайн-занятии.
2. Обратите внимание что пост хранит "дату и время последнего изменения
поста", это значит что если пост кто-то изменит (например вызовет какой-то
метод, который изменит что-то в посте), дата и время последнего изменения
поста также должна измениться.
3. Выполняйте все по порядку, не стоит пытаться сделать все сразу, иначе можно
что-нибудь пропустить.
4. Если непонятно условие - задайте вопрос.
-->
<script>
"use strict";

function PostES5(author, text) {
this.author = author;
this.text = text;
this.modified = new Date();
}

PostES5.prototype.edit = function(text) {
this.text = text;
this.modified = new Date();
}

const post = new PostES5('Margaret','Margaret biography');
console.log(post);
post.edit('Biography of Margaret and her family');
console.log(post);



class PostES6 {
constructor(author, text) {
this.author = author;
this.text = text;
this.modified = new Date(); //
}
edit(text) {
this.text = text;
this.modified = new Date();
}
}

//const post2 = new PostES6('Margaret','Margaret biography');
//console.log(post2);
//post2.edit('Biography of Margaret and her family');
//console.log(post2);

function AttachedPostES5(author, text) {
PostES5.call(this, author, text);
this.highlighted = false;
}

AttachedPostES5.prototype = Object.create(PostES5.prototype);
AttachedPostES5.prototype.consructor = AttachedPostES5;

AttachedPostES5.prototype.makeTextHighlighted = function() {
this.highlighted = true;
this.modified = new Date();
}

const attachedPost1 = new AttachedPostES5('Margaret','Margaret biography');
console.log(attachedPost1);
attachedPost1.edit('Biography of Margaret and her family');
attachedPost1.makeTextHighlighted();
console.log(attachedPost1);

class AttachedPostES6 extends PostES6 {
constructor(author, text) {
super(author, text);
this.highlighted = false;
}
makeTextHighlighted() {
this.highlighted = true;
this.modified = new Date();
}
}

const attachedPost2 = new AttachedPostES6('Margaret','Margaret biography');
console.log(attachedPost2);
attachedPost2.edit('Biography of Margaret and her family');
attachedPost2.makeTextHighlighted();
console.log(attachedPost2);

</script>
</body>
</html>
68 changes: 68 additions & 0 deletions 3.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Homework</title>
</head>
<body>
<!--
Необязательное задание.

Необходимо создать функцию getDigitsOfNumber, которая принимает целое
положительное число в диапазоне от 0 до 1000.
Функция должна вернуть обычный объект с тремя свойствами:
1. units - содержит число, количество единиц в параметре функции.
2. dozens - содержит число, количество десятков в параметре функции.
3. hundreds - содержит число, количество сотен в параметре функции.
Если функции было передано не целое положительное число, либо число в ином
диапазоне, нежели задано в условии, функция должна вывести в консоль информацию
об ошибке и вернуть пустой объект.
Необходимо также прописать jsdoc для данной функции.

Подсказка:
У объекта console есть разные методы, мы часто используем console.log для того
чтобы вывести в консоль какое-то значение, однако есть и другие методы, найдите
в интернете какие методы существуют и используйте "правильный метод" в нужном
месте. Обратите внимание что функция не должна выбрасывать ошибку, она должна
только вывести в консоль информацию о том, что что-то пошло не так.
Обратите внимание на слова "от 0 до 1000", это означает диапазон [0, 999], что
можно прочитать как "от нуля до 999 включительно".
-->
<script>
"use strict";

class DigitsOfNumber{
constructor(digit){
this.units = digit % 10;
this.dozens = Math.trunc((digit / 10) % 10);
this.hundreds = Math.trunc((digit / 100) % 10);
}

/**
* функция вводит строку с клавиатуры, проверяет на соответствие диапазону [0,999]
* выводит в консоль ошибку в случае несоответствий, преобразует в число, которое
* разбивается на разряды, которые записываются в класс
* @input вводные данные не требуются
*
* @returns возвращает указатель на объект в который поразрядно записаны разряды
* введеного числа
*/
getDigitsOfNumber(){
const digits = Number(prompt('Введите число от 0 до 999'));
if (isNaN(digits)) {
console.log('Введено не число.');
} else if ((digits < 0) || (digits > 999)) {
console.log('Введено число вне диапазона.');
} else {
return new DigitsOfNumber(digits);
//console.log(digits);
}
}
}

const digits = new DigitsOfNumber();
console.log(digits.getDigitsOfNumber());

</script>
</body>
</html>