And After - Design e Tecnologia por Sua Conta!
O desenvolvedor é um blog sobre desenvolvimento web, não tratando apenas de programação mas também compartilhando experiências, métodos, debates e tendências da internet.

O Desenvolvedor é um blog de www.andafter.org
Assinar o Feed RSS

Chris Benseler

[www]

Fotos sempre tiradas do lado direito do rosto. Que nem o Rei!
Viciado em web, trabalho com web. Javascript e (x)html são minha praia conhecida, e me arrisco com PHP e Java.
Na vida offline, futebol e música me distraem. E falar bobeiras com os amigos

Status
Karma: 16024
Opiniões: 30

Mais deste autor


Adicionando propriedades a objetos no Javascript em tempo de execução

Adicionando propriedades a objetos no Javascript em tempo de execução

Muito bomEste texto foi classificado como Muito bom
Em Internet, Programação
Por Chris Benseler
16 de Março de 2009

Função que facilita a adição de propriedades (funções, variáveis) a objetos usando o objeto prototype

RSS Acompanhe O Desenvolvedor por Feeds!


Uma capacidade muito explorada no javascript é a possibilidade de se adicionar propriedades a objetos em tempo de execução. Como javascript é uma linguagem interpretada, o desenvolvedor tem a possibilidade de adicionar propriedades (variáveis, funções, etc...) a objetos já instanciados.
Para isso, é usado o objeto prototype que todos objetos do javascript possuem.
Abaixo segue uma função que facilita a escrita; ao invés de criar para cada função a ser adicionada no objeto uma entrada diferente, com ela só é necessário passar como parâmetro o objeto e uma lista de propriedades.

/* função recebe dois parâmetros: o objeto e a lista de métodos que serão adicionados a ele */
    function addMethods(myObject, methods) {
       //percorre a lista de métodos
       for (var property in methods) {
           //adiciona o método ao objeto, dinamicamente
           myObject.prototype[property] = methods[property];
      }
}

Para facilitar, segue um código completo onde no onload da página adiciono ao objeto String (nativo do javascript) duas funções e uma variável:

<html>
<head>
    <title>Adicionar metodos</title>
    <script type="text/javascript">
    /* função recebe dois parâmetros: o objeto e a lista de métodos que serão adicionados a ele */
    function addMethods(myObject, methods) {
        //percorre a lista de métodos
        for (var property in methods) {
            //adiciona o método ao objeto, dinamicamente
            myObject.prototype[property] = methods[property];
        }
    }
    window.onload = function() {
        addMethods(String, {
            func1: function() {alert("Sou a funcao 1");},
            func2: function() {alert("Sou a funcao 2");},
            const1: 2
        });
        var myString = new String();
        myString.func1();
        alert(myString.const1);
    }
    </script>
   
</head>
<body>
  
</body>
</html>

O que você achou do texto?

  • Muito ruim
  • Ruim
  • Regular
  • Bom
  • Muito bom
Sua opinião é o que faz a comunidade funcionar, colabore para isso!

Tags: javascript, prototype

Enviar para um amigo
Você pode comentar, assinar o feed, conhecer mais sobre o autor e ajudar a divulgar este artigo em sua ferramenta favorita através dos botões abaixo.
  • Rec6
  • ueba
  • linkk
  • dihitt
  • linkloko
  • websapiens
  • linkto
  • Eu curti

Comentários

Guilherme Serrano

30/9/2009 09:58:00

Haha, juro que só hoje eu entendi completamente esse post, graças ao último publicado com a "extensão" do objeto Array! :D

[Responder este comentário]
Deixe seu comentário!

Nome (requerido)

E-mail (requerido - não será divulgado)

URL

Quanto é 2 + 5?




web tracker