Comment puis-je voir si un certain objet a été chargé, et sinon, comment peut-il être chargé, comme suit?
if (!isObjectLoaded(someVar)) {
someVar= loadObject();
}
S'il s'agit d'un objet, vous devriez simplement être en mesure de vérifier s'il s'agit de null ou ndefined , puis le charger s'il l'est.
if (myObject === null || myObject === undefined) {
myObject = loadObject();
}
L'utilisation de la fonction typeof est également une option car elle renvoie le type de l'objet fourni. Cependant, il retournera null ou indéfini si l'objet n'a pas été chargé, donc il pourrait se résumer un peu à vos préférences personnelles en ce qui concerne la lisibilité.
if(typeof(o) != 'object') o = loadObject();
myObject = myObject || loadObject();
Si par chargé vous voulez dire défini, vous pouvez vérifier le type de la variable avec la fonction typeof. CEPENDANT typeof a quelques bizarreries et identifiera 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, alors vérifiez avec quelque chose comme
if(null !== x && 'object' == typeof(x)){
alert("Hey, It's an object or an array; good enough!");
}
Je ne sais pas ce que vous entendez par "chargé" ... la variable object
existe-t-elle et n'a tout simplement pas le type que vous voulez? 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 object
n'est pas renseigné avec quoi que ce soit avant votre test (c'est-à-dire - typeof object === 'undefined'
), Alors vous avez juste besoin de:
if ('undefined' === typeof object) { object = loadObject(); }
Vous voulez probablement voir si un objet donné est défini
Surtout si son 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 entre en existence.
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();
}
Vous pouvez également utiliser simplement un raccourci if(obj)
if (!("someVar" in window)) {
someVar = loadObject();
}
vous indiquera si un JS a précédemment affecté au global someVar
ou déclaré un niveau supérieur var someVar
.
Cela fonctionnera même si la valeur chargée est undefined
.
typeof(obj)
renverrait "objet" pour un objet d'une classe parmi d'autres valeurs possibles.