Javascript对象属性检测

时间:2014-10-02 15:25:06

标签: javascript

执行以下操作所需的代码量最少:

如果对象存在且它具有必需属性且属性不是空字符串,则将变量设置为属性值,否则将变量设置为默认字符串。

假设对象变量只能是未定义的或有效的对象,它永远不能是函数,null,字符串或其他任何东西。此外,如果对象具有必需的属性,则它是一个字符串,而不是其他任何东西。

解决这个问题的方法可能是:

// obj is the object we are testing, prop is the name of the property, def is the default string

var result = def;
if (obj && obj[prop] && obj[prop].length) {
    result = obj[prop];
}

这是否完全正确我不确定。

但是有更短的路吗?

谢谢,

AJ

1 个答案:

答案 0 :(得分:2)

如果你想缩短它,你可以写:

result = (obj && obj[prop]) || def;

空字符串是假的,因此您无需明确检查长度。

result = <val> || <default>;

是将变量设置为值的常用习惯用法,如果值为null,则为默认值。