Далее на странице...
Здесь будет решена практическая задача по работе с объектами в Javascript. Будут задействованы функции и условия if else.
Нужно будет написать функцию для проверки автомобилей.
Что нужно знать из теории для работы с объектами?
1. Полезно будет ознакомиться с темой: создание объекта.
2. Дополнительно можно ознакомиться с темами: объект String, объект Number и объект Date.
Условие задачи:
1. Есть три объекта (три автомобиля): first_Car, second_Car и third_Car.
2. Каждый из объектов (автомобилей) имеет набор свойств и соответствующих им значений (характеристики автомобиля).
3. Рассмотрим один из объектов:
var first_Car = {
make: "VAZ", /* производитель */
model: 2106, /* модель */
year: 1980, /* год выпуска */
color: "beige", /* цвет */
passengers: 5, /* число пассажиров */
convertible: false, /* откидной верх */
mileage: 80000 /* пробег */
}
- свойства make и color имеют строковые значения;
- свойства model, year, passengers и mileage - числовые значения;
- свойство convertible принимает булево значение.
Нужно сделать следующее:
Написать функцию, которая проверяет автомобиль по двум параметрам (год выпуска и пробег) и возвращает булево значение true или false.
Подробности:
1. Функция имеет один параметр car, в качестве которого получает один из 3-х объектов. Например, выше рассмотренный автомобиль first_Car.
2. Функция должна работать с любым подобным объектом.
Функция для проверки объекта - true или false
<script type="text/javascript">
/* 1-ый объект */
var first_Car = {
make: "VAZ",
model: 2106,
year: 1980,
color: "beige",
passengers: 5,
convertible: false,
mileage: 80000
}
/* 2-ой объект */
var second_Car = {
make: "VW",
model: "Passat b3",
year: 1990,
color: "neptune",
passengers: 5,
convertible: false,
mileage: 160000
}
/* 3-ий объект */
var third_Car = {
make: "Hyundai",
model: "Solaris",
year: 2012,
color: "wet asphalt",
passengers: 5,
convertible: false,
mileage: 15000
}
/* Функция для проверки объекта */
function good_Car(car) {
if (car.year < 2000){
return false;
}
else if (car.mileage > 50000){
return false;
}
else{
return true;
}
}
/* Вызов функции и Вывод результата */
var result = good_Car(third_Car);
document.write(result);
</script>
true
Комментарии к решению:
- Итак, есть три объекта (три автомобиля), каждый из которых можно проанализировать при помощи функции good_Car.
- Функция good_Car имеет один параметр car, в качестве которого может выступать любой из объектов (автомобилей): first_Car, second_Car или third_Car: function good_Car(car).
-
В теле Функции good_Car составлено условие, согласно которому:
- если значение свойства year объекта car меньше 2000 (другими словами: если год выпуска автомобиля меньше 2 000), то функция возвращает false;
- иначе, если значение свойства mileage объекта car больше 50000 (если пробег автомобиля больше 50 000), то функция возвращает false;
- иначе функция возвращает true.
-
Далее мы вызываем функцию и в качестве параметра указываем объект third_Car (третий автомобиль), который успешно проходит проверку. Результат работы функции заносится в переменную result:
var result = good_Car(third_Car);. -
Переменная result выводится на экран;
-
Два других объекта (автомобиля) не будут соответствовать требованиям условия.
Оптимизация кода
Продолжим работать с объектами в javascript.
Рассмотренная выше функция при проверке объектов (автомобилей) выдает в результате true или false (истину или ложь).
Можно немного улучшить восприятие решения рассмотренной задачи, например, вместо true или false выводить какой-либо текст. Для этого составим условие анализа результата.
<script type="text/javascript">
/* 1-ый объект */
var first_Car = {
make: "VAZ",
model: 2106,
year: 1980,
color: "beige",
passengers: 5,
convertible: false,
mileage: 80000
}
/* 2-ой объект */
var second_Car = {
make: "VW",
model: "Passat b3",
year: 1990,
color: "neptune",
passengers: 5,
convertible: false,
mileage: 160000
}
/* 3-ий объект */
var third_Car = {
make: "Hyundai",
model: "Solaris",
year: 2012,
color: "wet asphalt",
passengers: 5,
convertible: false,
mileage: 15000
}
/* Функция для проверки объекта */
function good_Car(car) {
if (car.year < 2000){
return false;
}
else if (car.mileage > 50000){
return false;
}
else{
return true;
}
}
/* Вызов функции и Анализ результата */
var result = good_Car(third_Car);
if(result) {
document.write("У Вас неплохой автомобиль: " + third_Car.year + " год выпуска, с пробегом " + third_Car.mileage + " км.");
}
else{
document.write("Не будем говорить о Вашем автомобиле....");
}
</script>
У Вас неплохой автомобиль: 2012 год выпуска, с пробегом 15000 км.
Условие для анализа результата составлено следующим образом.
Выражение if(result) является сокращенной формой записи выражения
if(result == true).Если результат работы функции good_Car является истинным true, то мы выводим на экран фразу: «У Вас неплохой автомобиль: 2012 год выпуска, с пробегом 15000 км.», где
- 2012 и 15000 - это значения свойств year и mileage объекта third_Car.
-
Если же условие для проверки результата выдаст ложное значение false, то мы увидим: «Не будем говорить о Вашем автомобиле....». То есть рассматриваемый объект (автомобиль) не прошел проверку.
Оптимизация кода - Идем дальше - Добавляем функцию
Но и это еще не все. Посмотрим внимательно на фрагмент кода для вызова функции и анализа результата:
/* Вызов функции и Анализ результата */
var result = good_Car(third_Car);
if(result) {
document.write("У Вас неплохой автомобиль: " + third_Car.year + " год выпуска, с пробегом " + third_Car.mileage + " км.");
}
else{
document.write("Не будем говорить о Вашем автомобиле....");
}
Здесь объект third_Car (третий автомобиль) указывается трижды:
- Первый раз при вызове функции good_Car он указан в качестве ее параметра: good_Car(third_Car).
- И далее он фигурирует еще дважды, когда мы к нему обращаемся для указания его свойств: third_Car.year и third_Car.mileage.
Это не очень удобно, так как при анализе другого объекта (автомобиля) нам придется его имя также указывать трижды.
Чтобы добиться одноразового указания анализируемого объекта, нужно и результат работы функции good_Car и анализ этого результата (то есть весь этот код) занести в еще одну функцию.
<script type="text/javascript">
/* 1-ый объект */
var first_Car = {
make: "VAZ",
model: 2106,
year: 1980,
color: "beige",
passengers: 5,
convertible: false,
mileage: 80000
}
/* 2-ой объект */
var second_Car = {
make: "VW",
model: "Passat b3",
year: 1990,
color: "neptune",
passengers: 5,
convertible: false,
mileage: 160000
}
/* 3-ий объект */
var third_Car = {
make: "Hyundai",
model: "Solaris",
year: 2012,
color: "wet asphalt",
passengers: 5,
convertible: false,
mileage: 15000
}
/* Функция для проверки объекта */
function good_Car(car) {
if (car.year < 2000){
return false;
}
else if (car.mileage > 50000){
return false;
}
else{
return true;
}
}
/* Заносим результат работы функции good_Car и Анализ результата в еще одну функцию */
function itog(car){
var result = good_Car(car);
if(result) {
document.write("У Вас неплохой автомобиль: " + car.year + " год выпуска, с пробегом " + car.mileage + " км.");
}
else{
document.write("Не будем говорить о Вашем автомобиле....");
}
}
itog(third_Car);
</script>
Решение с использованием еще одной функции
У Вас неплохой автомобиль: 2012 год выпуска, с пробегом 15000 км.
Комментарии
Итак, здесь этот фрагмент кода, то есть результат работы функции good_Car и анализ этого результата, были занесены в еще одну функцию
function itog(car) с параметром car.Благодаря этому любой объект (автомобиль) может быть проанализирован. И при этом его имя будет указано лишь один раз: при вызове функции itog: itog(third_Car).
На этом пока все. Это была практическая задача по работе с объектами в Javascript с использованием функций.