آداپتور flip جای دو ورودی اول تابع مورد نظر را عوض میکند. function flip(fn) { return function flipped(arg1,arg2,...args){ return fn(arg2,arg1,...args); } } function f(...args) { return args; } let g = flip(f); g(1,2,3,4); // [2,1,3,4] آداپتور reverse ترتیب ورودیهای تابع مورد نظر را برعکس میکند. function reverseArgs(fn) { return function reversed(...args){ return fn(...args.reverse()); } } function f(...args) { return args; } let g = reverseArgs(f); g(1,2,3,4); // [4,3,2,1] آداپتور spread ورودیهای تابع مورد نظر را تبدیل به یک لیست میکند. function spreadArgs(fn) { return function spread(args){ return fn(...args); } } function f(x,y,z,w) { return x + y + z + w; } let g = spreadArgs(f); g([1,2,3,4]); // 10 آداپتور ورودیهای تابع مورد نظر را تبدیل به یک لیست میکند.