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
55 changes: 55 additions & 0 deletions 1.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
<!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, price) {
this.name = name;
this.price = price;
}

ProductES5.prototype.make25Discount = function () {
this.price *= 0.75;
};

const productES5 = new ProductES5('umbrella', 1000);

console.log(`Сегодня ${productES5.name} стоит ${productES5.price} рублей`);
productES5.make25Discount();
console.log(`Завтра скидка и ${productES5.name} будет стоить ${productES5.price} рублей`);

class ProductES6 {
constructor(name, price) {
this.name = name;
this.price = price;
}
make25Discount() {
this.price *= 0.75;
}
}

const productES6 = new ProductES6('umbrella', 1000);
console.log(`Сегодня ${productES6.name} стоит ${productES6.price} рублей`);
productES6.make25Discount();
console.log(`Завтра скидка и ${productES6.name} будет стоить ${productES6.price} рублей`);

</script>
</body>
</html>
120 changes: 120 additions & 0 deletions 2.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
<!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.dateTimePost = new Date();
}

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

const postES5 = new PostES5("Jon", "Text");
console.log(postES5);
postES5.edit("New text");
console.log(postES5);

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

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

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

const attachedPostES5 = new AttachedPostES5("Jon", "Text");
console.log(attachedPostES5);
attachedPostES5.makeTextHighlighted();
attachedPostES5.edit("New text real");
console.log(attachedPostES5);

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

const postES6 = new PostES6("Jon", "Text");
console.log(postES6);
postES6.edit("New text");
console.log(postES6);

class AttachedPostES6 extends PostES6 {
highlighted = false;
makeTextHighlighted() {
this.highlighted = true;
this.dateTimePost = new Date();
}
}
const attachedPostES6 = new AttachedPostES6("Jon", "Text");
console.log(attachedPostES6);
attachedPostES6.makeTextHighlighted();
attachedPostES6.edit("New text real");
console.log(attachedPostES6);

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