2014-10-02 156 views
0

是什么的代码来执行所需要的最小量的以下各项: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

+2

这就是我该怎么做的。它是可读的,并做你想要的。 – kinakuta 2014-10-02 15:27:59

+0

由于这个关于寻找优化工作代码的问题,我已经将它标记为迁移到[CodeReview.SE]。 – Scimonster 2014-10-02 15:28:18

回答

2

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

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

空字符串falsy,所以你并不需要明确检查长度。

result = <val> || <default>; 

是将变量设置为值的常用方式,如果值为空,则使用默认方式。

+0

我不知道空字符串是否是虚假的,这实际上非常有帮助。谢谢 – 2014-10-02 15:32:07