Question

Comment puis-je savoir si un certain objet a été chargé, et si non, comment peut-il être chargé, comme suit?

if (!isObjectLoaded(someVar)) {
    someVar= loadObject();
}
Était-ce utile?

La solution

S'il s'agit d'un objet, vous devriez juste pouvoir vérifier s'il est null ou undefined , puis chargez-le si c'est le cas.

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

L'utilisation de la fonction typeof est également une option car elle renvoie le type de la objet fourni. Il renverra toutefois null ou undefined si l'objet n'a pas été chargé afin résumer un peu à la préférence personnelle en ce qui concerne la lisibilité.

Autres conseils

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

Je ne suis pas sûr de comprendre ce que vous entendez par "chargé" ... la variable objet existe-t-elle et n'a tout simplement pas le type souhaité? Dans ce cas, vous voudrez quelque chose comme:

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

puis utilisez if (isObjectType (object, MyType)) {object = loadObject (); } .

Si objet n'est pas renseigné avant votre test (c'est-à-dire - typeof objet === 'undefined' ), il vous suffit alors de:

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

Vous voulez probablement voir si un objet donné est défini

Surtout si cela est fait dans un thread asynchrone avec un setTimeout pour vérifier quand il se présente.

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

devrait en théorie détecter quand window.foo existe.

Si par chargé vous entendez défini, vous pouvez vérifier le type de la variable avec la fonction typeof. TOUJOURS , typeof a quelques particularités et identifie un objet, un tableau et un null en tant qu'objet

alert(typeof(null));

L'identification d'un null en tant qu'objet défini entraînerait probablement l'échec de votre programme. Vérifiez donc quelque chose comme

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

Vous pouvez aussi simplement utiliser un raccourci si (obj)

Si vous souhaitez détecter un objet personnalisé:

// craete a custom object
function MyObject(){

}

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

typeof (obj) renverrait " objet " pour un objet d'une classe parmi d'autres valeurs possibles.

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

vous dira si un JS a déjà été affecté au someVar global ou a déclaré un niveau supérieur var someVar .

Cela fonctionnera même si la valeur chargée est undefined .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top