Problemas com Object.prototype no Javascript

{ January 4th, 2011 }


cmilfont

Autor: cmilfont

Surgiu a necessidade de fazer um “monkey patch” no Object para incluir o método try como funciona no rails.

Com Javascript temos a possibilidade de modificar os métodos dos objetos como “métodos de classes” (inclusive built-in)  e reaproveitar esse código na extensão dos componentes. A herança tradicional e oficial é usando o “.prototype”, assim eu poderia fazer simplesmente [usando node.js para testar]:

Link caso não consiga ver no seu reader.

O problema disso, no client-side principalmente, é que não podemos alterar o Object.prototype diretamente porque provoca vários problemas, de cara estourou as funções anônimas criados a partir de closures. Uma solução bacana seria usar a definição de Object.defineProperty, mas nem todos os navegadores já implementam isso e ainda teríamos que definir a versão do js na tag script para 1.8, ou seja, inviável.


Link caso não consiga ver no seu reader.

Um workaround para resolver esse problema foi usando a função Object.create com a dica do Douglas Crockford:


Link caso não consiga ver no seu reader.

Não é uma solução elegante, sempre que eu for criar um objeto literal eu tenho que usar Object.create(args), mas por enquanto foi o melhor crossbrowser possível.
Se você tiver uma idéia melhor, comente aí que estou precisando :)

Categories: JavaScript ~ ~ Trackback


Assine os comentários deste artigo.


One Response to “Problemas com Object.prototype no Javascript”

  1. 1
    Rodolfo Jorge Nemer Nogueira

    Excelente artigo amigo. Me ajudou muito a informação sobre a referência de objetos no javascript. Legal mesmo a interação dos JSON com o stringfy, que é bem bacana também. O prototype resolve muito problemas também com relação a heranças.

    Abraços amigo!
    Rodolfo Jorge Nemer Nogueira
    Curitiba / Paraná
    UFPR – Música

Leave a Reply