JavaScript 中的所有事物都是对象: 字符串, 数值, 数组, 函数等等. 对象只是一种特殊的数据. 对象拥有属性和方法. 下面我们来看一下如何判断对象是否存在某属性.
1, 使用 in 关键字
该方法可以判断对象的自有属性和继承来的属性是否存在.
- var o = {
- x: 1
- };
- "x" in o; //true, 自有属性存在
- "y" in o; //false
- "toString" in o; //true, 是一个继承属性
2, 使用对象的 hasOwnProperty() 方法
该方法只能判断自有属性是否存在, 对于继承属性会返回 false.
- var o = {
- x: 1
- };
- o.hasOwnProperty("x"); //true, 自有属性中有 x
- o.hasOwnProperty("y"); //false, 自有属性中不存在 y
- o.hasOwnProperty("toString"); //false, 这是一个继承属性, 但不是自有属性
3, 使用 undefined 判断
自有属性和继承属性均可判断.
- var o = {
- x: 1
- };
- o.x !== undefined; //true
- o.y !== undefined; //false
- o.toString !== undefined //true
该方法存在一个问题, 如果属性的值就是 undefined 的话, 该方法不能返回想要的结果, 如下.
- var o = {
- x: undefined
- };
- o.x !== undefined; //false, 属性存在, 但值是 undefined
- o.y !== undefined; //false
- o.toString !== undefined //true
4, 在条件语句中判断
- var o = {
- };
- if (o.x) o.x += 1; // 如果 x 是 undefine,null,false," ",0 或 NaN, 它将保持不变
来源: http://www.css88.com/qa/javascript/11672.html