Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

.:: xTitus (Fábio) ::.

Herença de objeto

Recommended Posts

Olá a todos, antes vou explicar a minha idéia, seguindo o código abaixo:

 

Object.prototype.minha_func = function () {

[meu_codigo]

}

 

Originalmente a partir desse ponto, todos os objetos teriam a função "minha_func", porém isso não acontece no Internet Exploer(nem no 7), a exemplo, o objeto "document" não herda a minha função, o que não acontece nos outros navegadores, afinal, que eu saiba .. todos os outros tipo, são derivados de "Object", a pior parte é que fiz uma comparação com o operador "instanceof", "document" não é uma instancia de "Object" .. dai fica a dúvida .. document herda de quem ? ... no caso eu estou me referindo só ao "document", mas acontece com os outros objetos também .. gostaria de saber se alguem poderia me ajudar a descobrir como estar fazendo essa extensão de função para todos os objetos, grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

cuidado com a diferenca, por exemplo, c você fizer:document.prototype.funcao = function() { //implementacao};voce nunca vai executar essa funcao... o motivo disso é simples, a classe Document é uma classe estática (nao existe uma instancia dessa classe), se voce quizer poder usar:document.minhaFuncao();é só implementar assim:document.minhaFuncao = function() { };lembrando, se quizer acessar proprieades do objeto Document dentro da sua funcao, use sempre document.funcao e nunca this.funcao, pois voce esta executando uma funcao estatica ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

vlw Wilker, mais ainda não soluciona o problema pois indo mais a fundo na ideia, pelo fato todos os itens herdarem de "Object"(ou pelo menos deveriam), fazer um "var obj = document.getElementById('algo')" ... faria com que "obj" ganhasse automaticamente "minha_func", pois herda de "Object" .. hehehe .. sera que esse vai ser um caso sem solução ? anyway .. quem tiver mais alguma sugestão, agradeço desde já

Compartilhar este post


Link para o post
Compartilhar em outros sites

nao eh kra... isso pq n existe nenhuma heranca real do no JavaScript, os objetos nao herdam os outros de verdade... eles apenas copiam o "prototype" e implementam outros recursos, mas mexer no objeto pai nao vai modificar o filho, pois os dois nao tem relacao nenhuma (o pai apenas foi copiado de um original, e depois foram implementados mais recursos)sim... eh um POO meio fraco mesmo, mas tb, em nenhuma outra linguagem voce consegue modificar um objeto sem extende-lo, eh uma flexibilidade diferente, entao o jeito eh c acostumar mesmo :P

Compartilhar este post


Link para o post
Compartilhar em outros sites

hehehe... ja vi que eu vou ter que fazer uma .. meia gambiarra mesmo ... apesar que todos os outros browsers suportaram meu script... tinha que ser o IE .. tinha! XDD .. bom.. em todo caso vlw! ..

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.