2016-07-14 69 views
0

我有一個對象
me = { name: "Mo", age: 28, } 我想看看這個對象有例如屬性「高度」。 (它沒有)我怎麼能做到這一點?例如,如果它具有「高度」屬性,我可以給它一個「5,7」的值。如何訪問JavaScript對象屬性名稱不值

請注意:我不想檢查屬性VALUE(me.name),而是檢查屬性NAME。

謝謝。

回答

6

可以使用in操作:

if ("height" in me) { 
    // object has a property named "height" 
} 
else { 
    // no property named "height" 
} 

注意,如果對象沒有名爲「高度」屬性,你仍然可以添加這樣一個屬性:

me.height = 100; 

這一工程不管對象之前是否具有「高度」屬性。

另外還有.hasOwnProperty方法從對象的原型繼承:

if (me.hasOwnProperty("height")) 

那之間的區別與in測試是.hasOwnProperty()只返回true,如果屬性存在存在作爲直接屬性,而不是通過其原型鏈繼承。

+0

比你。有沒有方法可以在不使用條件語句的情況下將控件的屬性名打印出來?只是打印出屬性名稱>(並且不使用for循環)? – zzgooloo

1

直接回答:

if (Object.keys(me).indexOf("name") >= 0) { 
    //do the stuff 
} 

,但你應該做的,是建立一個契約對象/類/模塊,希望我有height財產。如果沒有,你應該拋出異常。編程中最糟糕的事情是一半的預期。它不僅打破了SOLID戒律,但也導致這樣的,其中唯一的解決辦法是重複的,如果/ switch語句,以確保治療的所有可能性的情況......

1

可以使用

if (me.hasOwnProperty('height')) 
{ 
} 
else 
{ 
}