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
52 changes: 52 additions & 0 deletions JSLessonFour/1.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
<!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 = this.price * 0.75;
console.log(`Скидка на товар ${this.name} сделана. Новая цена: ${this.price}`);
}

const productF = new ProductES5("Бананы", 100);
productF.make25Discount();

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

make25Discount() {
console.log(`Скидка на товар ${this.name} сделана. Новая цена: ${this.price}`);
}
}

const productS = new ProductES6("Яблоки", 200);
productS.make25Discount();

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

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

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;
}

const postF = new AttachedPostES5("Вася", "Здесь был Вася");
console.log(postF);
postF.edit("И здесь был Вася");
console.log(postF);
postF.makeTextHighlighted();
console.log(postF);


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

edit(newText) {
this.text = newText;
this.date = new Date();
}

}

class AttachedPostES6 extends PostES6 {

constructor(author, text){
super(author, text);
this.highlighted = false;
}

makeTextHighlighted() {
this.highlighted = true;
}

}

const postS = new AttachedPostES6("Маша", "Здесь была Маша");
console.log(postS);
postS.edit("И здесь была Маша");
console.log(postS);
postS.makeTextHighlighted();
console.log(postS);

</script>
</body>
</html>
56 changes: 56 additions & 0 deletions JSLessonFour/3.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>
<!--
Необязательное задание.

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

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

/**
* Функция считает количество единиц, десятков и сотен в заданном числе.
* @param {integer} num В диапазоне от 0 до 999 включительно
* @returns {units, dozens, hundreds} Если передано некорректное число, возвращает {}
*/
function getDigitsOfNumber(number) {
let result = {};
if (Number.isInteger(number) && number >=0 && number < 1000) {
result.units = number;
result.dozens = parseInt(number / 10);
result.hundreds = parseInt(number / 100);
} else {
console.error("Передано неверное число!");
}
return result;
}

console.log(getDigitsOfNumber(596));
console.log(getDigitsOfNumber(596.5));

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