Дисциплины - Проектирование динамических страниц

Основы JavaScript в Проектировании динамических страниц - Функциональные концепции - Неизменяемость

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

Рассмотрим примеры с объектом и массивом.

Объект color_lawn

let color_lawn = {
 title: "lawn",
 color: "#00ff00",
 rating: 0
}

в котором необходимо изменить свойство raiting.

Не правильный подход, нарушающий концепцию неизменяемости:

function rateColor(color, rating){
 color.rating = rating;
 return color;
}
console.log(rateColor(color_lawn, 5).rating) //5
console.log(color_lawn.rating); //5

Правильный подход, с использованием Object.assign()

var rateColor = function(color, rating){
 return Object.assign({}, color, {rating: rating});
}
console.log(rateColor(color_lawn, 5).rating) //5
console.log(color_lawn.rating); //0

Еще один правильный подход с помощью оператора распространения объекта ....

const rateColor = (color, rating) => ({
...color,
rating
});

Массив list

let list = [
 {title: "red"},
 {title: "lawn"},
 {title: "pink"}
]

не правильный подход

var addColor = function(title, colors){
  colors.push({title: title});
}

правильный подход, с использованием функции concat

const addColor = (title, colors) => colors.concat({title});

правильный подход с использованием оператора распространения ...

const addColor = (title, colors) => [...colors, {title}];

Количество комментариев: 0

Для того, чтобы оставить коментарий необходимо зарегистрироваться
00421-00422 ИИТ БГУИР
00423 ИИТ БГУИР
10421-10422 ИИТ БГУИР
10423 БГУИР
20421 БГУИР
30421 БГУИР
30423 БГУИР


Изображения Видео

1. JavaScript. Функциональное программирование. Лекция 2. Преобразование данных <iframe width="560" height="315" src="https://www.youtube.com/embed/EBKzRg4aTro" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
2. JavaScript. Функциональное программирование. Лекция 2 (продолжение) <iframe width="560" height="315" src="https://www.youtube.com/embed/phyt4PFk6Pc" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
3. HTML5 http://erud.by/files/books/HTML5.docx
4. ООП в JavaScript http://erud.by/object_orient_program/586
5. Фоновое видео jQuery http://johnpolacek.github.io/BigVideo.js
Учебная программа