Como solução, no metodoA(), realize a troca na linha 9 para:
_metodoB.apply(this);Com isso, o método B será chamado "como se fosse chamado" pelo objeto informado no apply(), no caso o this "verdadeiro".
UPDATE1: se precisar atribuir o método em eventos onclick, por exemplo, siga o modelo abaixo:
objeto.onclick = a (this, "meumetodo");UPDATE2: ATENCAO - se você passar um parâmetro para o método, o apply pára de funcionar!!!
function a (objeto, metodo) {return function () {objeto[metodo].apply(objeto)}}
É isso,
Tooper
obs: caso queira copiar o código, ele segue abaixo.
m = new Classe;
m.metodoA();
function Classe () {
this.metodoA = function () {
alert((this.location) ? "Window" : "Instancia");
_metodoB;
}
function _metodoB () {
alert((this.location) ? "Window" : "Instancia");
}
}