如何查看某个对象是否已加载,如果没有,如何加载,如下所示?如何检查一个变量是否在JavaScript中加载?
if (!isObjectLoaded(someVar)) {
someVar= loadObject();
}
如何查看某个对象是否已加载,如果没有,如何加载,如下所示?如何检查一个变量是否在JavaScript中加载?
if (!isObjectLoaded(someVar)) {
someVar= loadObject();
}
如果它是一个对象,那么你就应该能够进行检查,看它是否是null或undefined,然后加载它,如果它是。
if (myObject === null || myObject === undefined) {
myObject = loadObject();
}
使用typeof函数也是一个选项,因为它返回提供的对象的类型。但是,如果该对象尚未加载,它将返回null or undefined,因此在可读性方面它可能会归结为个人偏好。
typeof(obj)
将返回“对象”用于其他可能的值中的类的对象。
if(typeof(o) != 'object') o = loadObject();
请记住,typeof返回“对象”的空值,所以你可能会想要类似[if(null!== x &&'object'== typeof(x)){] – 2008-09-18 23:10:52
我不确定你的意思是“加载”......变量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何时存在。
如果要检测一个自定义对象:
// craete a custom object
function MyObject(){
}
// check if it's the right kind of object
if(!(object instanceof MyObject)){
object = new MyObject();
}
你也可以使用快捷if(obj)
如果加载你的意思是定义,你可以使用typeof检查变量的类型功能。 无论其的typeof有几个怪癖,并将确定的对象,数组和空为对象
alert(typeof(null));
确定一个null作为一个定义的对象可能会导致程序出现故障,所以检查喜欢的东西
if(null !== x && 'object' == typeof(x)){
alert("Hey, It's an object or an array; good enough!");
}
myObject = myObject || loadObject();
if (!("someVar" in window)) {
someVar = loadObject();
}
会告诉你任何JS之前是否已经分配给格洛巴l someVar
或宣布顶级var someVar
。
即使加载值为undefined
,也可以工作。
不是像if (myObject == null)(或未定义)就够了,因为这恰恰是简单相等的一点?或者我错过了什么? – PhiLho 2008-12-03 14:19:51