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