Пользовательские объекты Java Script. Специальные операторы.
Цель работы
Изучить способы создания пользовательских объектов,
познакомиться с правилами применения специальных операторов: delete, in, instanceof, typeof.
Задания
Задание 1
Создать пользовательский объект Gruppa (использовать пример, представленный выше). Добавить метод sub_stud (исключить из группы k студентов). Создать несколько экземпляров объекта Gruppa (gr2, gr3, gr4). Применить методы add_stud и sub_stud к каждому экземпляру. Вывести на страницу количество студентов в каждой группе.
Решение
Java Script
function Group(group_number, speciality, students_number){
this.group_number = group_number
this.speciality = speciality
this.students_number = students_number
this.sub_student = function sub_student(count) {
this.students_number -= count
if(count == 1)
alert("Из группы " + this.group_number + " был исключен "
+ count + " студент.")
else
alert("Из группы " + this.group_number + " было исключено "
+ count + " студентов.")
}
this.add_student = function add_student(count) {
this.students_number += count
if(count == 1)
alert("В группу " + this.group_number + " был добавлен "
+ count + " студент.")
else
alert("В группу " + this.group_number + " было добавлено "
+ count + " студентов.")
}
}
let first_group = new Group(1, "Web Design", 30)
let second_group = new Group(2, "Software", 27)
let third_group = new Group(3, "Game Dev", 28)
let first_start = first_group.students_number
let second_start = second_group.students_number
let third_start = third_group.students_number
alert(first_group.speciality + ": " + first_group.group_number + "-я группа, "
+ first_group.students_number + " студентов.\n"
+ second_group.speciality + ": " + second_group.group_number + "-я группа, "
+ second_group.students_number + " студентов.\n"
+ third_group.speciality + ": " + third_group.group_number + "-я группа, "
+ third_group.students_number + " студентов.")
let substract = prompt("Сколько студентов вы хотите исключить из группы "
+ first_group.group_number + "?", 0)
substract = Number.parseInt(substract)
first_group.sub_student(substract)
let add = prompt("Сколько студентов вы хотите добавить в группу "
+ second_group.group_number + "?", 0)
add = Number.parseInt(add)
second_group.add_student(add)
add = prompt("Сколько студентов вы хотите добавить в группу "
+ third_group.group_number + "?", 0)
add = Number.parseInt(add)
third_group.add_student(add)
substract = prompt("Сколько студентов вы хотите исключить из группы "
+ third_group.group_number + "?", 0)
substract = Number.parseInt(substract)
third_group.sub_student(substract)
alert("В " + first_group.group_number + "-й группе было " + first_start
+ " студентов, стало " + first_group.students_number + '\n'
+ "В " + second_group.group_number + "-й группе было " + second_start
+ " студентов, стало " + second_group.students_number + '\n'
+ "В " + third_group.group_number + "-й группе было " + third_start
+ " студентов, стало " + third_group.students_number + '\n')
Задание 2
Создать пользовательский объект Студент. Свойства: имя, фамилия, физика (оценка), математика, информатика. Методы: вывести свое имя и фамилию в окно, рассчитать средний балл и вывести на страницу. Создать 3 экземпляра объекта Студент. Вывести информацию о всех студентах. Добавить какое-нибудь свойство объекту Студент. Задать значение этого свойства для всех экземпляров. Вывести информацию о всех студентах на страницу.
Вместо объекта Студент можно придумать свой пример. Это приветствуется.
Вместо объекта Студент можно придумать свой пример. Это приветствуется.
Решение
Java Script
function Student(m_name, m_secondName, m_physicsMark,
m_mathMark, m_compScienceMark){
this.m_name = m_name
this.m_secondName = m_secondName
this.m_physicsMark = m_physicsMark
this.m_mathMark = m_mathMark
this.m_compScienceMark = m_compScienceMark
this.printName = (name, secondName) => {
this.m_name = name
this.m_secondName = secondName
alert("Фамилия: " + this.m_secondName
+ "\nИмя: " + this.m_name)
}
this.printGroup = group => {
this.m_group = group
alert("Группа: " + this.m_group)
}
this.averageMark = (physicsMark, mathMark, compScienceMark) => {
this.m_physicsMark = physicsMark
this.m_mathMark = mathMark
this.m_compScienceMark = compScienceMark
let average = ((this.m_physicsMark + this.m_mathMark + this.m_compScienceMark) / 3).toFixed(2)
alert("Средний балл: " + average)
}
this.printAllInfo = (name, secondName, physicsMark, mathMark, compScienceMark, gr{
this.m_name = name
this.m_secondName = secondName
this.m_physicsMark = physicsMark
this.m_mathMark = mathMark
this.m_compScienceMark = compScienceMark
this.m_group = group
let average = ((this.m_physicsMarkm_mathMark + this.m_compScienceMartoFixed(2)
alert("Фамилия: " + this.m_secondName
+ "\nИмя: " + this.m_name
+ "\nГруппа: " + this.m_group
+ "\nСредний балл: " + average)
}
}
let student1 = new Student("Александр", "Добриян", 7, 4, 9)
let student2 = new Student("Чеслав", "Линевич", 10, 10, 10)
Student.prototype.m_group = this.m_group
student1.m_group = 10
student2.m_group = 10
student1.printName(student1.m_name, student1.m_secondName)
student1.printGroup(student1.m_group)
student1.averageMark(student1.m_physicsMark, student1.m_mathMark,
student1.m_compScienceMark)
student2.printName(student2.m_name, student2.m_secondName)
student2.printGroup(student2.m_group)
student2.averageMark(student2.m_physicsMark, student2.m_mathMark,
student2.m_compScienceMark)
student1.printAllInfo(student1.m_name, student1.m_secondName,
student1.m_physicsMark, student1.m_mathMark, student1.m_compScienceMark, student1.m_group)
student2.printAllInfo(student2.m_name, student2.m_secondName,
student2.m_physicsMark, student2.m_mathMark, student2.m_compScienceMark, student2.m_group)
Задание 3
Использовать объекты Math, Array и String из лабораторной работы № 3.
Delete. Удалить из массива элемент с номером 3, вывести исходный массив и полученный.
In. Проверить, имеется ли у массива 2-й элемент. Проверить наличие любого свойства у созданных ранее пользовательских объектов Gruppa и Студент.
Instanceof. Проверить, являются ли созданные объекты объектами Array, String, Object.
Typeof. Создать функцию, которая просто возвращает значение 5. Узнать тип всех созданных ранее объектов, включая функцию. Узнать тип всех свойств пользовательских объектов Gruppa и Студент.
Delete. Удалить из массива элемент с номером 3, вывести исходный массив и полученный.
In. Проверить, имеется ли у массива 2-й элемент. Проверить наличие любого свойства у созданных ранее пользовательских объектов Gruppa и Студент.
Instanceof. Проверить, являются ли созданные объекты объектами Array, String, Object.
Typeof. Создать функцию, которая просто возвращает значение 5. Узнать тип всех созданных ранее объектов, включая функцию. Узнать тип всех свойств пользовательских объектов Gruppa и Студент.
Решение
Java Script
// оператор delete
alert("Исходный массив:\n" + arrayObj)
delete arrayObj[2]
alert("Массив, после удаления 3-го элемента:\n" + arrayObj)
// оператор in
2 in arrayObj ? alert("В массиве есть 3-й элемент.") : alert("В массиве нет 3-го элемента.")
'm_name' in student1 ? alert("В объекте 'Student' есть свойство 'm_name'.")
: alert("В объекте 'Student' нет свойства 'm_name'.")
'm_name' in first_group ? alert("В объекте 'Group' есть свойство 'm_name'.")
: alert("В объекте 'Group' нет свойства 'm_name'.")
// оператор instanceof
let instanceText;
strObj instanceof String ? instanceText = "'strObj' является объектом String.\n"
: instanceText = "'strObj' не является объектом String.\n"
arrayObj instanceof Array ? instanceText += "'arrayObj' является объектом Array.\n"
: instanceText += "'arrayObj' не является объектом Array.\n"
student1 instanceof Student ? instanceText += "'student1' является объектом Student.\n"
: instanceText += "'student1' не является объектом Student.\n"
alert(instanceText);
// оператор typeof
const returnFive = () => 5
alert("Тип обьекта, который возвращает число 5: " + typeof returnFive
+ "\nТип обьекта 'strObj': " + typeof strObj
+ "\nТип обьекта 'arrayObj': " + typeof arrayObj
+ "\nТип обьекта 'student1': " + typeof student1
+ "\nТип обьекта 'first_group': " + typeof first_group
+ "\nТип обьекта 'Group': " + typeof Group
+ "\nТип обьекта 'Student': " + typeof Student)
alert("Объект Student:"
+ "\nТип свойства 'm_name': " + typeof student1.m_name
+ "\nТип свойства 'm_secondName': " + typeof student1.m_secondName
+ "\nТип свойства 'm_physicsMark': " + typeof student1.m_physicsMark
+ "\nТип свойства 'm_mathMark': " + typeof student1.m_mathMark
+ "\nТип свойства 'm_compScienceMark': " + typeof student1.m_compScienceMark
+ "\nТип свойства 'm_group': " + typeof student1.m_group)
alert("Объект Group:"
+ "\nТип свойства 'group_number': " + typeof first_group.group_number
+ "\nТип свойства 'speciality': " + typeof first_group.speciality
+ "\nТип свойства 'students_number': " + typeof first_group.students_number)