[英]How to check if a variable is loaded in JavaScript?
如何查看某个对象是否已加载,如果没有加载,如何加载,如下所示?
if (!isObjectLoaded(someVar)) {
someVar= loadObject();
}
如果它是一个对象,那么你应该能够检查它是否为null或未定义 ,然后加载它(如果是)。
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(); }
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有一些怪癖,并将识别一个Object,一个Array和一个null作为对象
alert(typeof(null));
将null标识为已定义的对象可能会导致程序失败,因此请检查类似的内容
if(null !== x && 'object' == typeof(x)){
alert("Hey, It's an object or an array; good enough!");
}
如果要检测自定义对象:
// craete a custom object
function MyObject(){
}
// check if it's the right kind of object
if(!(object instanceof MyObject)){
object = new MyObject();
}
if(obj)
你也可以使用快捷方式
if (!("someVar" in window)) {
someVar = loadObject();
}
将告诉您是否有任何JS先前已分配给全局someVar
或声明了顶级var someVar
。
即使加载的值undefined
这也会起作用。
typeof(obj)
将返回类的对象的“object”以及其他可能的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.