Um problema que demorei, mas foi bem simples de resolver. O caso é o seguinte: criei uma classe no Javascript, como exemplo abaixo:
function minhaClasse(a,b){
this.a = a;
this.b = b;
this.c = 0;
function calculaC(){
}
obj.onload = calculaC;
obj.src = "oi.html"
}
Essa é uma classe imaginária para dar a base que eu quero: como podem ver, a função calculaC é usada como callback de um objeto obj quando ele carregar um arquivo "oi.html". Como o próprio nome da função diz, ele vai ter que atribuir o resultado no atributo c da classe. Entretanto, se a função calculaC for algo assim:
function calculaC(){
this.c = 100;
}
Aqui vai ocorrer um erro avisando que o c não foi encontrado, porque o objeto que está vinculado ao calculaC não é o objeto minhaClasse, mas sim o objeto obj, pois agora essa função estará vinculada a esse objeto, ou seja, a palavra chave this estará referenciando o obj. Mas como resolvi esse problema. Foi simples, criei uma variável global da classe chamada self e atribui ao próprio objeto. Agora, sempre que for referenciar a própria classe, uso o self e não o this, e independente da função ou objeto que ele está vinculado, sempre estarei referenciando ao meu próprio objeto. Veja como ficaria:
function minhaClasse(a,b){
this.a = a;
this.b = b;
this.c = 0;
var self = this;
function calculaC(){
self.c = 100;
}
obj.onload = calculaC;
obj.src = "oi.html"
}
Então é isso pessoal, até a próxima!
Nenhum comentário:
Postar um comentário