2014-10-02 210 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