Ответы
Ivan Gagarinov
20 декабря 2022
Миксины (mix in) нужны для добавления какой-то логики в существующий класс. В JS это можно достигнуть добавлением методов в прототип.
Пример:
const numbers1 = [1, 3];
// Как только выполнится этот код, все массивы,
// включая уже созданные, обзаведутся методом last
Array.prototype.last = function last() {
// Такое обращение законно, ведь this это ссылка на сам объект,
// который в нашем случае массив
return this[this.length - 1];
}
numbers1.last(); // 3
const numbers2 = [10, 0, -2];
numbers2.last(); // -2
В Array добавлен метод last()
, который возвращает последний элемент.
Обычно под термином "миксин" подразумевают класс или объект, который расширяет базовый класс.
Для этого перепишем пример выше:
const numbers1 = [1, 3];
const arrayMixin = {
last() {
return this[this.length - 1];
},
};
Object.assign(Array.prototype, arrayMixin);
numbers1.last(); // 3
const numbers2 = [10, 0, -2];
numbers2.last(); // -2
Теперь объект arrayMixin является миксином, который расширяет базовое поведение Array
28
0
Кирилл Шацкий
27 июня 2023
Здравствуйте! Правильно ли я понимаю, что последний пример необходим только для соблюдения код-стайла\паттерна? По сути, первый вариант (с добавлением метода напрямую в прототип) намного проще и лаконичней смотрится...
8
0