e se non è possibile ad es se voglio passare ad una funzione un tipo creato da me come faccio a eseguire i suoi metodi ?
ad es :
codice:
function Tuple2() {
    var val1;
    var val2;
}

Tuple2.prototype = {

    SetTuple: function (value1, value2) {
        this.val1 = value1;
        this.val2 = value2;
    },
    GetTupleVal: function (posAt) {
        switch (posAt) {
            case 0:
                return this.val1;
                break;
            case 1:
                return this.val2;
                break;
        }
    }
};
se passo un istanza di tuple2 ad una funzione , posso chiamare i suoi metodi(i metodi di tuple2?)? tipo GetTupleVal?
e se chiamo i metodi allo stesso modo ho il polimorfismo?
e se passo un altro tipo che non centra un piffero cosa succede?

io in questo caso vorrei gestire un blocco di dati indipendentemente dai blocchi di dati contenuti in esso , se si trattino di tuple1 ,tuple2,tuple3 o tuple4 mantenendo un valore al numero di elementi del blocco (1,2,3,4).
grazie.