Christian Schubert: Replikation von Method Chaining außerhalb von Objekten?

Beitrag lesen

Hallo,

fürchte ja mittlerweile, dass es für mein Anliegen tatsächlich keinen optimaleren Weg gibt, aber vielleicht kann ja doch jemandem eine andere Betrachtungsweise beitragen:

Methoden von Objekten lassen sich ja wunderbar nach dem Muster func1().func2().func3() zusammenketten, (solange jedes Glied der Kette this zurückgibt).

...lässt sich das irgendwie auch außerhalb von Objekten replizieren?

(spreche hier nicht von higher order function wie map, filter, reduce, etc, die von Arrays aufgerufen werden können, die wiederum ja auch nichts anderes als Objekte sind).

function addOne(param) {
	return param + 1;
}
function timesTwo(param) {
	return param * 2;
}
function minusSeven(param) {
	return param - 7;
}

// MÜHSAM MIT -ZIG ZWISCHENSCHRITTEN
let stepOne = addOne(1); // 1 + 1 = 2
let stepTwo = timesTwo(stepOne); // 2 * 2 = 4
let finallyDone = minusSeven(stepTwo); // 4 - 7 = -3
console.log(finallyDone); // -3


// IN EINEM SCHRITT ABER SEHR UNÜBERSICHTLICH
let allInOneGo = minusSeven(timesTwo(addOne(1))); // (((1 + 1) * 2) - 7) = -3
console.log(allInOneGo); // -3

// Dummy Code // natürlich so nicht möglich weil Objektnotation
// wäre aber doch viel übersichtlicher!
// ***
// let allInOneGo = addOne(1).timesTwo().minusSeven();
// ***

Dank euch für eure Meinung,

LG Christian