Ir para conteúdo
Fórum Script Brasil

Jonathan Queiroz

Membros
  • Total de itens

    3.718
  • Registro em

  • Última visita

Tudo que Jonathan Queiroz postou

  1. Não precisa, mas em alguns casos pode ser interessante criar um método "padrão" na interface e, em casos específicos, sobrecarregá-lo em determinada classe.
  2. Entendi. Como é sobrecarregar o método para apenas uma classe, você pode utilizar o código que postei no post #2.
  3. Nesse caso nem funcionaria, pois não dá pra modificar um método que já foi criado. Se você quer sobrecarregar um método, tente fazer como eu falei. Ou o objetivo é realmente modificar a ação do método em todas as classes ?
  4. Supondo que o prototype fosse aplicado aí, ele iria valor para TODAS as classes que utilizam a interface, ou seja, se você tivesse uma classe "Moto" que utilizasse a interface "Motor", o método "acelerar" estaria igual ao que foi setado na classe "Carro". Mas ele não é aplicado pelos seguintes motivos: O prototype pode inserir métodos, mas não alterarFaltou o "=function()" aliSe o que você quer é implementar o método acelerar derivado da interface Motor na classe Carro (e somente nessa classe), pode fazer assim: function Carro() { Motor.Interface.call(this) //implementação do método acelerar da interface motor this.acelerar=function(valor) { return valor += 10 } } Creio que deve funcionar. Qualquer coisa posta aí !
  5. Troque a função Mensagem para ficar assim: function Mensagem(elemento) { mensagens = [ "Mensagem 1", "Mensagem 2", "Mensagem 3", "Quarta mensagem", "Mensagem 5" ] elemento.innerHTML = mensagens[Random.get(mensagens.length)] } E deixe o código HTML assim: <a href="#" onclick="Mensagem(this)">Clique para colocar a primeira mensagem</a>
  6. O Alexandre deixou a função pronta... Use a que ele fez (mas troque o string[indice] para string.charAt(indice))
  7. Seria sobre a conversão de tipos (por exemplo, float para int, string para float, etc.) ? Se for sobre alguma função "cast()", eu nunca ouvi falar...
  8. Basta copiar o código que o Eduardo postou e inserir.
  9. Você vai ter que colocar a classe do Eduardo no seu código também.
  10. Só está mostrando o código da "última pessoa", é isso ? Se for isso, veja essa linha: $xml = "\n<pessoa>\n"; Você está zerando a variável nessa linha.
  11. Nesse caso esse código que você tem não vai ser muito útil. Tente criar um array com várias mensagens e gerar um número aleatório. Para gerar o número aleatório você pode aproveitar essa classe que o Eduardo postou: Objeto Random O código Javascript pode ficar mais ou menos assim: function Mensagem(){ mensagens = [ "Mensagem 1", "Mensagem 2", "Mensagem 3", "Quarta mensagem", "Mensagem 5" ] this.innerHTML=mensagens[Random.get(mensagens.length)] } E o HTML: <a href="#" onclick="Mensagem()">Clique para colocar a primeira mensagem</a> Se funcionar posta aqui.
  12. A explicação do Kakarotto foi excelente ! Só faltou citar que é possível utilizar try e catch para capturar as exceções. Quando vi que o Eduardo tinha postado, já havia terminado meu post... Então vai assim mesmo. O throw serve pra lançar uma exceção, que pode ser recuperada depois. É utilizado para separar o tratamento de erros no código. Por exemplo, observe esse código: function PedeInteiros_E_Divide() { //Função para auxiliar a validação var valida = function (numero, pode_ser_nulo) { if (numero == "") { alert("Digite algo !") return null //se é inválido, retorna null }else if (isNaN(numero)) { alert("O valor digitado deve ser numérico") return null //se é inválido, retorna null } else if (numero != parseInt(numero)) { alert("O valor digitado deve ser inteiro") return null //se é inválido, retorna null } else if (numero == 0 && !pode_ser_nulo) { alert("O valor digitado não pode ser nulo") return null //se é inválido, retorna null } return numero //Se é válido, retorna o próprio número } //Primeiro número var num1 = valida(prompt("Digite um número inteiro:"),true) if (num1==null) { return null //indica que houve um erro retornando "null" } //Segundo número var num2 = valida(prompt("Digite um número inteiro não-nulo:"),false) if (num2 == null) { return null //indica que houve um erro retornando "null" } //Divide os dois return num1/num2 } function teste() { while (1) { var result = PedeInteiros_E_Divide() if (result == null) { alert("Vamos tentar de novo !\nVê se não erra mais...") } else { alert("O resultado da divisão dos números é: " + result) break; } } } A validação está muito complicada. Poderíamos deixar mais simples. Observe o código melhorado: function PedeInteiros_E_Divide() { //Função para auxiliar a validação var valida = function (numero, pode_ser_nulo) { if (numero == "") { throw "Digite algo !" } else if (numero == null) { throw "Dê OK ao invés de CANCEL" }else if (isNaN(numero)) { throw "O valor digitado deve ser numérico" } else if (numero != parseInt(numero)) { throw "O valor digitado deve ser inteiro" } else if (numero == 0 && !pode_ser_nulo) { throw "O valor digitado não pode ser nulo" } return numero //Se é válido, retorna o próprio número } //Primeiro número var num1 = valida(prompt("Digite um número inteiro:"),true) //Segundo número var num2 = valida(prompt("Digite um número inteiro não-nulo:"),false) //Divide os dois return num1/num2 } function teste() { while (1) { try { alert("O resultado da divisão dos números é: " + PedeInteiros_E_Divide()) break; } catch (erro) { alert(erro + "\n\nVamos tentar de novo !\nVê se não erra mais !") } } } Bem mais simples, e o tratamento do erro está separado da parte funcional. Qualquer coisa posta aí ! Obs.: Aquela função valida ali foi só pra não repetir o código pros dois números.
  13. A forma de declarar com o "classe : {nome1:valor1,nome2:valor2}" é apenas questão de gosto (está relacionada a JSON) É o mesmo que: classe=function(){ this.nome1=valor1 this.nome2=valor2 this.metodo1=function(){ alert("bom dia") } }É possível fazer o mesmo de várias formas diferentes. Sim, exatamente. Como em JS não existe uma maneira formal de declarar atributos/métodos privados utiliza-se o "var" para definir o escopo. Sim. Não há muita diferença entre funções e métodos. É como se funções fossem variáveis (na verdade são) e métodos fossem atributos. Na verdade o this.velocidade (método) é uma coisa e o velocidade (variável local - na verdade um parâmetro da função) é outra. Como já disse, Javascript não implementa formalmente o conceito de atributo privado e é necessário simular isso com variáveis locais, que são independentes dos atributos (inclusive podem ter o mesmo nome, que é o caso). No código do Eduardo, há um método e uma variável com mesmo nome, o que também é possível (métodos são atributos cujo tipo é "function", funções são variáveis cujo tipo é "function"). Aquele método "velocidade" ali só serve pra retornar a variável local "velocidade" (isso foi feito pra simular um atributo readonly, se você quiser pode obter o valor, mas não modificá-lo) Resumo: Naquele código que o Eduardo postou, a classe "Carro" deriva da classe "Interface.motor" de tal maneira que a classe "Interface.motor" possui acesso ao valor da variável privada (e não à própria variável) "velocidade". Isso acontece porque o valor é passado como argumento para a classe base e é utilizado depois. Espero que tenha entendido. Qualquer coisa posta aí !
  14. Como você está fazendo ? Um exemplo é o seguinte: var antes = "Bom dia !\nTudo bem ?" var depois = reverse(antes) alert(antes + "\n\n\n" + depois)
  15. Como assim "método abstrato" ? Seria um método estático, que pode ser chamado sem instanciar um objeto ?
  16. Não entendi a dúvida. Pode explicar melhor ? Como está chamando as funções abrir e fechar ?
  17. Mario, a ideia de um desafio CSS é boa, mas acho que misturar com o de JS não seria boa ideia. Aliás o próprio desafio de JS já dá notas por layout e isso iria complicar a avaliação. Mas sou a favor, sim, de um desafio CSS. O desafio realmente é fácil, creio que o diferencial nas notas será dado pelos extras, criatividade, código limpo, etc. Lucas, para participar basta enviar um e-mail para: desafioscriptbrasil@gmail.com Mas lembre-se de que só poderá enviar o e-mail uma vez. Até agora não recebemos nenhum script, seria interessante que todos os que pretendem enviar participar do torneio postassem aqui para facilitar (não é obrigatório, apenas organização mesmo)
  18. Movendo: Ajax, JavaScript, XML, DOM --> Outros assuntos. À princípio, creio que não haja diferença nenhuma. Aliás encoding, character encoding, character set (charset) são a mesma coisa. Talvez você esteja confuso com o valor Content-Type do protocolo HTTP. Esse valor deve vir no seguinte formato: [tipo_de_arquivo]; charset=[codificação] (exemplo: text/html; charset=UTF-8)
  19. Nesse caso já não está somente relacionado a AJAX, e sim ao próprio protocolo HTTP. Para ver os parâmetros existentes veja o segundo link do meu psot anterior. Já o setRequestHeader('Content-Type', 'application/x-www-form-urlencoded') é utilizado para enviar dados por POST.
  20. Movendo: HTML, XHTML, CSS --> Editores. Tente usar o Notepad++.
  21. O que você quer fazer alterando esses headers ? Pode ser mais específico ? De qualquer forma, esses dias estava trabalhando em um software C++ que fazia requisições HTTP por Winsock. Isso aqui me ajudou bastante: http://www.w3.org/Protocols/rfc2616/rfc2616.html Mais especificamente, veja isso: http://www.w3.org/Protocols/rfc2616/rfc2616-sec5.html#sec5.3
×
×
  • Criar Novo...