An alternative would be the old lambda-calculus trick of just saving the function with values in the closure.
function Tuple(/* args... */) {
var args = arguments;
this.unpack = function(fn) {
return fn.apply(null, args);
}
}