- crea una variabile _self come ti ha suggerito rsdpzed
- Utilizza quella invece di this (perché "this" può cambiare in base al contesto)
- non passare la funzione _self.sit ad un metodo jQuery perché jQuery ne cambia il contesto.
codice:
function Table(n){
var _self = this; // soluzione
this.number=n;
this.user=Array();
this.button=$("#table_1").find(".sitdown");
this.button.bind("click",function(e) {_self.sit()}); // <----- non chiamare direttamente la funzione
this.li.each(function(index, element) {
_self.user.push($(element).text()); primo problema
});
}
Table.prototype.sit = function(){
// do something
}
La soluzione proposta da mxa credo sia anche valida, ma la funzione "bind" (nativa) non è supportata da Internet Explorer 8 e inferiori. Quindi dipende dal tuo target (potresti anche trovare una patch per IE e usare il metodo di mxa)