Necesito poder determinar cuándo se crea un objeto (no un elemento DOM - un objeto javascript).¿Está atento a un evento de creación de propiedades?
An answer to this question tiene un código de aspecto muy útil para crear propiedades observables, por lo que puede hacer que una función se active cuando cambia una propiedad.
En mi situación, necesito hacer algo cuando se crea el objeto/propiedad, no una propiedad existente modificada, y mi comprensión limitada de tales asuntos no me ayudó a determinar si o cómo podría usar ese código para hacer esto. después de mucho entrecerrar los ojos.
La situación es la siguiente: la página carga un conjunto de scripts. Algunos de los guiones crear cosas que son necesarias otras secuencias de comandos, por ejemplo:
ThisStuff = (function() {
// blah blah
return self;
}());
algún otro código necesario para inicializar este ThisStuff
, siempre que esté disponible, que puede ser después de que el DOM se realiza la carga. El usuario en realidad no necesita ThisStuff
de inmediato, por lo que está bien que suceda cada vez que se termina de cargar el script. Así que me gustaría hacer algo a lo largo de las líneas de:
$(document).ready(function() {
wheneverIsAvailable(window,'ThisStuff', function(object) {
object.init(args);
})
});
Sé que existen otras soluciones para este problema (cambiar el orden de secuencia de comandos o scripts de carga bajo demanda), pero esas son difíciles debido a la arquitectura. Entonces, solo estoy interesado en una forma de hacer esto frente a otras soluciones. Si jQuery ofrece alguna de esas funciones, también está bien mientras lo estoy usando.
¿Cómo es que no me gusta esto? Desearía que hubiera una manera sin temporizador para hacerlo fácilmente, pero no es un gran problema. –
@jamietre: Tampoco me gustan esos hacks, pero los temporizadores generalmente funcionan bien. Además, esto es bastante fácil en mi opinión. – pimvdb
Para divertirme, en realidad lo escribí antes de actualizar esto con el código, está aquí: http://jsfiddle.net/hpw8Y/3/ .. en muchos aspectos similar, aunque no pude averiguar si el mío en realidad trabajo. Lo que no pude entender es, y haces esto con una matriz, ¿seguirá existiendo 'obj' en la mía cuando finalmente tenga éxito? Sin embargo, hay una mejora sobre la suya: no inicie el temporizador a menos que tenga que hacerlo :) –