Предназначен для создания новых экземпляров из функции-колбэка
Это поведение полезно в случаях, когда нужно динамически построить на основе функции, используя какие-то переменные из скоупа, где создана функция
Пример 1.
import { Guest } from 'patron-oop';
class Timestamp {
seconds(guest) {
guest.give(Date.now())
}
}
const timestamp = new Timestamp();
timestamp.seconds(new Guest((timestamp) => {
console.log('timestamp is', timestamp);
}));
Результат 1.
Возможность создавать объект-посетитель из функции была единственной в первых версиях библиотеки. На текущий момент вы можете также передать функцию-колбэк в качестве посетителя, тк функция соответствует типу Это позволяет не создавать лишних объектных-оберток
Пример 2.
import { Guest } from 'patron-oop';
class Timestamp {
seconds(guest) {
give(Date.now(), guest);
}
}
const timestamp = new Timestamp();
timestamp.seconds((timestamp) => {
console.log('timestamp is', timestamp);
});