¿Cómo comprobar si una variable está cargada en JavaScript?
-
01-07-2019 - |
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();
}
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
.