javascript prototyping
2 seguidores
Hola
Estoy intentando crear prototypes de capas. Para ello, Mozilla, tiene el objeto HTMLDivElement, definido en DOM-Level1 por la w3c
http://www.w3.org/TR/REC-DOM-Level-1/level-one-html.html#ID-22445964
Lo utilizaría así:
HTMLDivElement.prototype.foo = function()
{
alert("bar")
}
El caso es Internet Explorer. Alguien sabe como llegar hasta la definición de "div" para prototypearlo :)
gracias
meddle
Los prototypes no tienen nada que ver con las capas. ¿Puedes explicar un poco mejor que pretendes decir con "crear prototypes de capas"?
nuuun
quiero hacer que al poner, por ejemplo, document.getElementById("nombre_de_capa").foo() invoque a la función foo independientemente del div que sea y sin tener que definir "foo" cada vez que un div se pinta.
Es decir, si en vez de con capas fuese con Strings, sería algo como:
String.prototype.deleteLastChar= function()
{
return arguments[0].substring(0,arguments[0].length-1);
}
ahora podría hacer "loremipsum".deleteLastChar() y esto debería devolver "loremipsu"
Eso es a lo que quiero llegar...
meddle
ah, ok. entonces lo mas facil es que te olvides de objetos por ahora, hasta este nivel puedes hacerlo simplemente pasando argumentos a la funcion foo. Ejemplo teorico:
<code>
function foo(capa){
document.getElementById(capa).style.color = "red"
}
</code>
No creo que necesites nada mas complicado Si lo necesitas ya me lo diras y te ayudo mejor, aunque igual el siguiente tutorial te ayuda.
El caso de tus strings es distinto, pues ahi si que seguro que te interesa ampliar el Objeto String con ese nuevo metodo 'deleteLastChar'. Te recomiendo un excelente tutorial de DiL: http://www.geocities.com/doc_iacobus/ensenya.html
Grita si necesitas mas ayuda. Estaremos por aqui.
nuuun
ok, puede ser una solución, gracias, en cierto modo, podría arreglarme así y es una solución que cuento con ella desde el principio.
Probablemente sea cabezonería :) pero quisiera llegar a crear métodos para objetos HTML. Para así, por ejemplo, en caso de que quiera meter esa función en un timeout, cada capa lleve un proceso independiente y, en este caso, cada capa pueda correr su método idependientemente de que existan otras capas haciendo la misma operación...
Me explico un poco mal, sobre todo los lunes, gracias por entenderlo :)
meddle
tal como la he puesto, foo puede ir en un timeout independiente para cada una de tus 20mil capas, si quieres. Es cuestion de prioridades y de estructuracion de codigo. Los prototipos estan bien, pero cuando son necesarios, y decidir cuando se ponen o no puede llegar a ser algo muy subjetivo. con las pocas pistas que tu me das para foo, yo no usaria prototype.