//存在且是function
}else{
//不存在或不是function
}
1、直接判断对象不为nullif (!myObj) {
var myObj = { }
}
Javascript语言是"先解析,后运行",解析时就已经完成了变量声明
2、使用window对象判断某对象是否存在
if (!window.myObj) {
var myObj = { }
}
3、使用this对象判断某对象是否存在
if (!this.myObj) {
this.myObj = { }
}
在某些运行环境中(比如V8、Rhino),window未必是顶层对象。所以,考虑改成this进行判断,在全局变量的层面中,this关键字总是指向顶层变量,所以就可以独立于不同的运行环境。
4、方法三这样写可读性较差,而且this的指向是可变的,容易出错,所以进一步改写:
var global = this
if (!global.myObj) {
global.myObj = { }
}
if (typeof myObj == "undefined") {
var myObj = { }
}
这是目前使用最广泛的判断javascript对象是否存在的方法。
这在IE浏览器中往往会弹出一个js错误提示框,影响用户体验。所以比较好的做法是,在访问页面元素的属性或方法之前,先判断此页面元素是否存在。function f(elementId) {var obj = document.getElementById(elementId)if(obj) {// 相关操作}}上面的代码是先通过document.getElementById()去获取指定的页面元素,然后通过if(obj)判断页面元素是否存在,如果存在则进行相关操作。