last day (15 days later) » 

6:22 PM
2
A: Chamar um método de uma classe Javascript (OOP)

Rui PimentelSe você puder adicionar a linha return this; como última da declaração da função/classe SDK, então é possível chamar a função desejada instanciando (var a = new SDK(); a.start();) ou não o protótipo (SDK().start();). Se não puder realizar esta modificação, então pelo menos na minha visão (e p...

 
Na verdade não... SDK(), sem new e com return this retornaria o objeto global. Mas de fato existe como fazer a chamada sem new fazer um new internamente.
 
Não sei muito bem o que quer dizer objeto global, mas testei no Chrome e chamou corretamente a função. Não deveria?
 
No browser, seria window. SDK().start(); não deu erro no seu teste?
 
Ah, o window (esse eu conheço! hahaha!). Então, não deu erro não; veja com seus próprios olhos: jsfiddle.net/8twxajLh/4.
 
É verdade, não dá erro. Mas agora seu objeto window tem as funções onComplete, onError e start :S jsfiddle.net/5v8pw5wq
Já isto funcionaria, mas não sei se adianta para o @DouglasdosSantos jsfiddle.net/164geejk
 
6:22 PM
Verdade, o que parece uma bizarrice para mim. A minha experiência com JS é mais prática, aprendi fuçando, então isso não faz sentido... Por que o window ganha os atributos da função ao executá-la?
 
@RuiPimentel Quando você chama uma função "solta", this é sempre window. Então this.start = function... cria um método em window.
 
Aaaahn, faz todo o sentido agora!
 
Já se você chama a função em um objeto (o.fn()), this se refere ao objeto o
 
Sua solução é excelente! Pelo que o OP descreveu, acredito que sua solução seria válida! Por que não propõe uma resposta?
 
Porque eu achei que no fundo era o que você estava tentando fazer, então deixei a resposta pra vc :)
 
6:26 PM
Não, não fazia ideia desta solução, e na verdade só postei porque não estava ciente do efeito colateral XD
 
Ok, então eu posto
 
Excelente! E eu colocarei mais informações na minha, apenas para que as pessoas tenham um panorama de todas as soluções "possíveis" :D
Obrigado, @bfavaretto!
 
@RuiPimentel De nada!
@RuiPimentel Vou dar uma limpada nos nossos comentários embaixo da sua resposta ok?
 
7:04 PM
Tranquilo! :D
 

last day (15 days later) »