De vez en cuando hay una JS framework o biblioteca que piensa que es una buena idea agregar algunas características nuevas en el prototipo de Object
o Array
. No puedo encontrar más ejemplos en este momento, pero sí recuerdo que he tenido problemas con eso antes. Por supuesto, al hacerlo se rompe el viejo bucle for(...in...)
, porque de repente esas propiedades ahora también se enumeran. Para evitarlo, debe verificar cada propiedad enumerada con .hasOwnProperty()
antes de acceder. Que es engorroso, cuando se trata de escribir código robusto.¿Puedes hacer un objeto en Javascript que NO herede de Object?
Así que me pregunto: ¿hay alguna forma de que yo pueda hacer mis propios objetos para que no hereden de Object
? El juego inicial con .prototype
no arrojó ningún resultado. Tal vez hay algún truco para eso? ¿O todo siempre heredará desde Object
y no hay nada que pueda hacer al respecto?
Agregado: Supongo que debería haber notado que lo quiero para las secuencias de comandos del cliente en los navegadores, y la compatibilidad debe incluir IE6, o al menos IE7. Otros requisitos de la versión del navegador son más indulgentes, aunque cuanto más mejor, por supuesto. (Sí, por desgracia, el mundo empresarial aún vive en el IE-mundo ...)
* bad * old 'for (... in ...)' loop seguramente –
@RobAgar - why so? Realmente, estoy cansado de escribir cosas como 'for (var i, l = myArray.length; i
generalmente los marcos que cambian el prototipo, también proporcionan una forma de recorrer los elementos. En Mootools, 'myObj.each()' hará el trabajo ... también '[" foo "," bar "]. Each()' – pleasedontbelong