Hola:
 
Con prototype se pueden añadir nuevos atributos y métodos a los objetos, ya sean creados por el usuario como los existentes... 
Con una declaración: 
var dato = new autoComplete(cur); 
Con ese añadido se puede hacer algo así:
dato.moveUp(); 
La otra sintaxis se usa para decrecer en una unidad el atributo cur del objeto actual (this)... Si se pone antes del objeto decrece antes de ser usado y si se pone después primero se usa y luego se hace decrecer... en el caso que comentas, al ser una instrucción aislado da igual donde se ponga, pero por ejemplo:
midato = miarray[++indice] y miarray[indice++] son distintas. en el primero de los casos primero incrementa el valor de la variable indice y luego se hace la asignación, y en el segundo se hace primero la incrementación y luego se asigna...
var miarray = new Array(10, 20, 30);
var indice = 1;
// miarray[++indice] == 30
// miarray[indice++] == 20 
Si no entiendes algo, avisa. 
Saludos