por ejemplo para this.parentNode
me gustaria solo escribir this.p
o en lugar de
document.getElementById('someid')
solo escribe document.g('someid')
. Por supuesto que son ejemplos simples, solo quiero saber cuál es la forma correcta de hacerlo.
(Sé que puedo usar jQuery o Prototype, pero me gustaría aprender cómo se hace realmente en JS)

scunliffe
Aunque tú poder prototipo en el HTMLElement
en muchos navegadores – Internet Explorer (6,7,8) es NO uno de ellos. AFAIK, IE9 admite esto (aunque no lo he probado).
Para los navegadores que lo manejan, puede hacer:
HTMLElement.prototype.doHello = function(thing){
console.log(this + ' says: ' + thing)
}
document.body.doHello('hello')

Tim abajo
Recomiendo encarecidamente no intentar hacer esto, por algunas razones:
- Compatibilidad del navegador. Si bien es posible en varios navegadores, no es posible en IE <= 8.
- Los elementos DOM son objetos host. Los objetos host (es decir, los proporcionados por el entorno que no son objetos nativos de JavaScript) no tienen la obligación de seguir las mismas reglas que los objetos nativos de JavaScript y, aparte del comportamiento DOM especificado, pueden hacer lo que quieran. Por lo tanto, incluso si algunos navegadores proporcionan una
HTMLElement
prototipo y permitirle aumentarlo, no hay garantía de que funcione como espera.
- Compatibilidad con otro código en su página. Si cualquier otro código en su página (como Prototype) interfiere con el
HTMLElement
prototipo, corre el riesgo de colisiones de nombres y errores difíciles de detectar.
En su lugar, sugeriría crear objetos envolventes alrededor de los nodos DOM como lo hacen jQuery, YUI y otras bibliotecas.
Kangax ha escrito un buen artículo sobre extensibilidad DOM, cubriendo todos estos puntos y más.
En una palabra, no. es mejor no modificar objetos que no son de su propiedad.
Esto es particularmente cierto para HTMLElement
, que no puede modificar en algunos navegadores.
.