Ho difficoltà a fare riferimento a "questo" all'interno di una funzione in linea javascript, all'interno di un metodo oggetto.Accesso a questa funzione dalla funzione inline dell'oggetto
var testObject = {
oThis : this,
testVariable : "somestring",
init : function(){
console.log(this.testVariable); // outputs testVariable as expected
this.testObject.submit(function(){
var anotherThis = this;
console.log(this.testVariable) // undefined
console.log(oThis.testVariable) // undefined
console.log(testObject.testVariable) // outputs testVariable
console.log(anotherThis.testVariable) // undefined
}
}
Come posso accedere this.testVariable
dall'interno della funzione di presentare? Sto anche usando jQuery, se questo fa la differenza.
Mi chiedo se questo è l'approccio migliore - e forse avrei dovuto presentare come una funzione separata, e quindi fare riferimento che in linea, come:
init : function(){
this.testObject.submit = this.submitForm;
},
submitForm : function(){
// do validation here
console.log(this.testVariable) // outputs testvariable
.
.
.
return valid;
}
ma questo non sembra funzionare sia - e Penso che mi piacerebbe solo mantenere la funzione di invio in linea all'interno del mio metodo init
per ora.
possibile duplicato di [Perché questa chiusura non ha accesso alla parola chiave "this"? - jQuery] (http://stackoverflow.com/questions/3323189/why-doesnt-this-closure-have-access-to-the-this-keyword-jquery) –