Domanda

Come posso vedere se un determinato oggetto è stato caricato e, in caso contrario, come può essere caricato, come il seguente?

if (!isObjectLoaded(someVar)) {
    someVar= loadObject();
}
È stato utile?

Soluzione

Se si tratta di un oggetto, dovresti essere in grado di verificare se lo è nullo O non definito e poi caricarlo se lo è.

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

Usando il tipo di anche la funzione è un'opzione in quanto restituisce il tipo dell'oggetto fornito.Tuttavia, tornerà nullo o indefinito se l'oggetto non è stato caricato, potrebbe ridursi un po' alle preferenze personali per quanto riguarda la leggibilità.

Altri suggerimenti

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

Non ho capito cosa intendi con "caricato"...fa la variabile object esiste e semplicemente non ha il tipo che desideri?In tal caso, ti servirà qualcosa come:

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

e poi utilizzare if (isObjectType(object, MyType)) { object = loadObject(); }.

Se object non è popolato con nulla prima del test (cioè - typeof object === 'undefined') allora ti basta:

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

Probabilmente vorrai vedere se un determinato oggetto lo è definito

Soprattutto se viene eseguito in un thread asincrono con un setTimeout per verificare quando viene visualizzato.

  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 ); 

dovrebbe in teoria rilevare quando window.foo entra in esistenza.

Se per caricato intendi definito, puoi verificare il tipo della variabile con la funzione typeof. TUTTAVIA typeof ha alcune stranezze e identificherà un oggetto, un array e un file nullo come oggetto

alert(typeof(null));

Identificare un null come oggetto definito probabilmente causerebbe il fallimento del tuo programma, quindi controlla con qualcosa di simile

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

Puoi anche usare semplicemente una scorciatoia if(obj)

Se desideri rilevare un oggetto personalizzato:

// craete a custom object
function MyObject(){

}

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

typeof(obj) restituirebbe "oggetto" per un oggetto di una classe tra gli altri possibili valori.

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

ti dirà se qualche JS è stato precedentemente assegnato al global someVar o dichiarato di primo livello var someVar.

Funzionerà anche se il valore caricato lo è undefined.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top