«Единственный способ творить великие дела – это любить то, что ты делаешь»
JavaScript
site.komp36.ru Создание сайтов. Твой сайт фотографа Что есть на сайте? Несколько фото галерей: свадебная, постановочная съемка, love story, детские фото. Договор на фотосъемку, прайс-лист.
site.komp36.ru Продающий лендинг «Установка и продажа окон» Установка и продажа окон, установка дверей, перегородок. Одностраничный продающий сайт. Заявки прямо с сайта
site.komp36.ru Универсальный лендинг. Любая тема сайта - 4900 руб. Лендинг адаптируется под любую тему: ремонт, отделка, продажа окон, дверей, лестниц, мебели и многое другое
site.komp36.ru Создание сайтов. Сайт сервисного центра. Сайт компании. Новости и отзывы. Несколько прайс-листов – под каждый отдельная страница. Возможность размещения статей


Игра «Морской Бой» на JavaScript: Простая Игра и Игра для Двоих



Продолжим практическое освоение Javascript. Поговорим о передаче объектов в функции.

Если Вы не еще работали с объектами, то смотрите предыдущую практическую задачу, где также есть ссылки на теорию.

Что нужно знать...

1. Читайте теорию об Объектах (перейти к ней можно по выше приведенной ссылке).

2. Полезно будет разобраться с материалом о передаче переменных в функцию.



Передача объектов в функцию - Немного теории

Для начала напомним о том, что при передаче переменной в функцию, в параметр функции копируется значение переменной, но не сама переменная (она не меняет своего исходного значения, и функция работает с копией).

Следующий момент, который следует понимать: в переменной, которая указывает на объект, хранится ссылка на него, но не сам объект.

Следовательно, если передать объект функции, то ей передается не сам объект, а ссылка на него.

Если обратиться к материалу о передаче переменных в функцию, согласно которому в функцию передается копия значения переменной. То выходит, что при передаче объекта функции - в ее параметр передается не ссылка на объект, а копия ссылки на объект.

Переменная - это ссылка на объект, она на него указывает.

В функцию передается копия ссылки на объект.

Для тех, кто запутался - это нужно прочесть и прокрутить в голове несколько раз.

Пример передачи объекта в функцию

1. В качестве примера рассмотрим объект, который содержит свойства, отражающие какие-либо качества и параметры собаки.

/* Объект «Собака» */
var
juicy = {
name: "Джуси",
/* имя собаки */
weight: 15, /* её вес в кг. */
breed: "Смесь", /* порода */
loves: "Прогулка" /* любит гулять */
}

- переменная juicy является ссылкой на объект, описывающий характеристики собаки;

2. Напишем функцию для снижения веса собаки.

function lose_Weight(dog,value)
{
dog.weight = dog.weight - value;
}

Функция lose_Weight работает со свойством weight (вес) объекта «Собака» и содержит два параметра dog и value:

- в параметр dog следует передать переменную juicy (см. выше), как ссылку на объект;

- в параметр value заносится произвольное число.

Итак, если в параметр dog функции lose_Weight передать переменную juicy, которая ссылается на объект «Собака», то функция снизит вес собаки на указанное во втором параметре число.

Фрагмент кода

<script type="text/javascript">

/* Объект «Собака» */
var
juicy = {
name: "Джуси",

weight: 15,
breed: "Смесь",
loves: "Прогулка"
}

/* Функция снижения веса */
function lose_Weight(dog,value)
{
dog.weight = dog.weight - value;
}

/* Вызываем функцию */
lose_Weight(juicy,3);

document.write("Собака " + juicy.name + " сейчас весит " + juicy.weight + " килограмм");

</script>

Результат

Результат - Передача объекта в Функцию

Собака Джуси сейчас весит 12 килограмм

Для тех, кто вник в суть передачи переменных в функцию, решение этой задачи может показаться неожиданным, ведь, напомним, что при работе с переменными в функцию передается копия значения переменной; исходное значение переменной остается прежним.

С объектами дело обстоит иначе: при передаче переменной, которая ссылается на объект, в функцию: все изменения свойств объекта, которые происходят внутри функции, отражаются на исходном объекте. Смотрите сами...

  • Мы вызвали функцию lose_Weight с параметрами juicy и 3.

    - juicy - это переменная, которая ссылается на объект «Собака»;

  • Внутри функции происходит обращение к свойству объекта weight - это вес собаки, из значения которого (то есть из 15) вычитается число 3.
    dog.weight = dog.weight - value

  • В результате изменения, которые были сделаны внутри функции, отразились на исходном объекте.

  • Ведь далее, при выводе на экран свойства weight объекта, мы видим, что собака стала весить 12 кг.

Итак, процедура передачи в функцию переменной, ссылающейся на объект, позволяет внутри функции менять свойства этого объекта.

Читайте также...

site.komp36.ruТвой сайт фотографа. Создание сайтов Что есть на сайте? Несколько фото галерей: свадебная, постановочная съемка, love story, детские фото. Договор на фотосъемку, прайс-лист.
site.komp36.ru Акция Как начать свое дело? Свой сайт «Укладка плитки» 9 000 руб. Лендинг адаптируется под любой вид отделочных работ, продажу товаров или услуг. Сайт поможет найти новых клиентов
site.komp36.ru Акция Продающий лендинг «Установка и продажа окон» 9 000 руб. Одностраничный продающий сайт. Установка и продажа окон, установка дверей, перегородок. Заявки прямо с сайта

Отзывы и комментарии:

Добавил(а): Андрей
Дата: 2019-07-15

Почему объект переданный в функцию не изменился после ее отработки? <pre> "use strict" let list = { value: 1, next: { value: 2, next: { value: 3, next: { value: 4, next: null } } } }; function objectKiller(obj) { obj = null; } objectKiller(list); console.log(list); </pre>

Оставить отзыв:

Ваше Имя:

Текст комментария:

Ответьте на вопрос:

Сколько дней в Високосном году?


Задачи по JavaScript
Тематические публикации
site.komp36.ru Как начать свое дело? Свой сайт «Укладка плитки» 9 000 руб. Лендинг адаптируется под любой вид отделочных работ, продажу товаров или услуг. Сайт поможет найти новых клиентов
site.komp36.ru Продающий лендинг «Установка и продажа окон» 9 000 руб. Одностраничный продающий сайт. Установка и продажа окон, установка дверей, перегородок. Заявки прямо с сайта
Популярные заметки
Последние заметки