Как узнать, загружен ли какой-либо объект, а если нет, как он может быть загружен, например:
if (!isObjectLoaded(someVar)) {
someVar= loadObject();
}
Как узнать, загружен ли какой-либо объект, а если нет, как он может быть загружен, например:
if (!isObjectLoaded(someVar)) {
someVar= loadObject();
}
Если это объект, вы должны просто проверить, есть ли null или undefined, а затем загрузите его, если он есть.
if (myObject === null || myObject === undefined) {
myObject = loadObject();
}
Использование функции typeof также является опцией, так как возвращает тип предоставленного объекта. Однако он вернет null или undefined, если объект не был загружен, поэтому он может немного свести к личным предпочтениям в отношении читаемость.
if(typeof(o) != 'object') o = loadObject();
myObject = myObject || loadObject();
Я не уверен, что вы подразумеваете под "загруженным"... существует ли переменная object
и просто не имеет нужного вам типа? В этом случае вам нужно что-то вроде:
function isObjectType(obj, type) {
return !!(obj && type && type.prototype && obj.constructor == type.prototype.constructor);
}
а затем используйте if (isObjectType(object, MyType)) { object = loadObject(); }
.
Если object
не заполнено чем-либо перед вашим тестом (т.е. - typeof object === 'undefined'
), вам просто нужно:
if ('undefined' === typeof object) { object = loadObject(); }
Вероятно, вы хотите узнать, определен ли данный объект
Особенно, если это сделано в асинхронном потоке с параметром setTimeout, чтобы проверить, когда он появится.
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 );
должен теоретически обнаруживаться, когда появляется window.foo.
Если при загрузке вы имеете в виду определенное значение, вы можете проверить тип переменной с помощью функции typeof. ОДНАКО typeof имеет несколько причуд и будет идентифицировать объект, массив и null как объект
alert(typeof(null));
Идентификация нуля как определенного объекта, вероятно, приведет к сбою вашей программы, поэтому проверьте что-то вроде
if(null !== x && 'object' == typeof(x)){
alert("Hey, It an object or an array; good enough!");
}
Если вы хотите обнаружить пользовательский объект:
// craete a custom object
function MyObject(){
}
// check if it the right kind of object
if(!(object instanceof MyObject)){
object = new MyObject();
}
Вы также можете использовать ярлык if(obj)
typeof(obj)
будет возвращать "объект" для объекта класса среди других возможных значений.
if (!("someVar" in window)) {
someVar = loadObject();
}
сообщит вам, был ли какой-либо JS ранее назначен глобальному someVar
или объявлен верхний уровень var someVar
.
Это будет работать, даже если загруженное значение undefined
.