Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Problema ao instanciar classe usando jason


Rafael Laurindo

Pergunta

Olhem esse código, ele pega uma string e retorna uma classe instanciável, ou seja um construtor. Mas não funciona com jason.

WindowEXT = {
  
      getConstruct : function(str)
      {
          arr = str.split('.')
          if (arr[1]){
              func = ...
          }
          else{
              var func = (window || this)
              func = func[str]
          }
          alert(typeof (func)) //esta linha é só para teste
          if (typeof (func) == 'function' || typeof (func) == 'object')
              return func
          return null/**/
      },
      
  }
Exemplo de uso Funciona
function Teste(){
       this.write(str){
           document.write(str)
       }
   }
Não funciona
Teste = {
      class : function(){
          this.write(str){
              document.write(str)
          }
      }
  }
Saída Erro
var t = WindowEXT.getConstruct('Teste.class')
  t.write('Rafael')
 saída Rafael
 [code]var t = WindowEXT.getConstruct('Teste')
   t.write('Rafael')

O que estaria errado?

Editado por Rafael Laurindo
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Eu mesmo consegui resolver assim

getConstruct : function(str)
    {
        var arr = str.split(".")
        var len = arr.length
        var fn = (window || this)
        var msg = ''
        for (var i = 0;  i < len; i++){
            fn = fn[arr[i]]
            if(i < len-1)
            {
                msg += arr[i] + '.'
                if (typeof fn !== 'object')
                    throw new Exception.class(arr[i] + ' is not a object')
            }
            else
                msg += arr[i]
            if (typeof fn === 'function')
                return fn
        }
        //essa ordem é porque o construtor é a última string
        throw new Exception.class(msg + ' is not a constructor')
    },
E assim ...
Teste = {
     class : function(){
         this.write(str){
             document.write(str)
         }
     }
}

function Teste(){
    this.write(str){
         document.write(str)
     }
}


//Saída Rafael
var t = WindowEXT.getConstruct('Teste.class')
t.write('Rafael')
//Saída Rafael
var t = WindowEXT.getConstruct('Teste')
t.write('Rafael')

Editado por Rafael Laurindo
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...