Pregunta

¿Cómo veo si se ha cargado un determinado objeto y, si no, cómo se puede cargar, como se muestra a continuación?

if (!isObjectLoaded(someVar)) {
    someVar= loadObject();
}
¿Fue útil?

Solución

Si es un objeto, entonces deberías poder comprobar si es nulo o indefinido y luego cárguelo si es así.

if (myObject === null || myObject === undefined) {
   myObject = loadObject();
}

Utilizando el tipo de La función también es una opción ya que devuelve el tipo de objeto proporcionado.Sin embargo, volverá nulo o indefinido si el objeto no se ha cargado, podría reducirse un poco a preferencias personales con respecto a la legibilidad.

Otros consejos

if(typeof(o) != 'object') o = loadObject();
myObject = myObject || loadObject();

No estoy seguro de a qué te refieres con "cargado"...hace la variable object ¿Existe y simplemente no tiene el tipo que desea?En ese caso, querrás algo como:

function isObjectType(obj, type) {
    return !!(obj && type && type.prototype && obj.constructor == type.prototype.constructor);
}

y luego usar if (isObjectType(object, MyType)) { object = loadObject(); }.

Si object no se completa con nada antes de la prueba (es decir, typeof object === 'undefined') entonces solo necesitas:

if ('undefined' === typeof object) { object = loadObject(); }

Probablemente quieras ver si un objeto determinado es definido

Especialmente si se hace en un hilo asincrónico con un setTimeout para comprobar cuándo aparece.

  var generate = function()
  { 
      window.foo = {}; 
  }; 
  var i = 0;
  var detect = function()
  {
     if( typeof window.foo == "undefined" ) 
     {
           alert( "Created!"); 
           clearInterval( i );
     }
   };
   setTimeout( generate, 15000 ); 
   i = setInterval( detect, 100 ); 

En teoría, debería detectar cuándo comienza a existir window.foo.

Si por cargado te refieres a definido, puedes verificar el tipo de variable con la función typeof. SIN EMBARGO typeof tiene algunas peculiaridades e identificará un objeto, una matriz y un nulo como un objeto

alert(typeof(null));

Identificar un valor nulo como un objeto definido probablemente provocaría que su programa fallara, así que consulte con algo como

if(null !== x && 'object' == typeof(x)){
    alert("Hey, It's an object or an array; good enough!");
}

También puedes usar un atajo if(obj)

Si desea detectar un objeto personalizado:

// craete a custom object
function MyObject(){

}

// check if it's the right kind of object
if(!(object instanceof MyObject)){
   object = new MyObject();
}

typeof(obj) devolvería "objeto" para un objeto de una clase entre otros valores posibles.

if (!("someVar" in window)) {
  someVar = loadObject();
}

le dirá si algún JS ha asignado previamente al global someVar o declarado de alto nivel var someVar.

Eso funcionará incluso si el valor cargado es undefined.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top